【发布时间】:2014-07-08 11:52:45
【问题描述】:
我从 XML 创建 HTML5 没有问题。
另一方面,我无法将 HTML5 转换为 HTML5。
比如这个源HTML5文档:
<!DOCTYPE html SYSTEM "about:legacy-compat">
<html>
<head>
<meta content="text/html; charset=UTF-8"/>
<title>Title</title>
</head>
<body>
<p>foo</p>
</body>
</html>
还有这个 xslt:
<xsl:stylesheet
version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs">
<xsl:output
method="html"
doctype-system="about:legacy-compat"
encoding="UTF-8"
indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
出现此错误:
未知协议:关于
(我使用的是 Saxon PE,但认为实际的处理器在这里无关紧要)
是否有 HTML5 源文件的 xmlns 条目?
我看到了这个相关的How to use the about: protocol of HTML5 in XSLT processors,但是看起来有点hackish,我也无法适用于我的情况。
更新:仍在解决这个问题。到目前为止,我发现,我错误地认为 HTML5 是可转换的有效 XML。 HTML5 显然不是有效的 XML。如果我想要可转换的 HTML5,我需要一个 XHTML5 的源文档(我不知道它存在)。使问题进一步复杂化的是,XHTML5 似乎是一个使用受限的年轻标准。我在这里找到了一个很好的讨论xhtml5 output 。
所以,我仍在寻找最初在 Q 中所述的解决方案。但是,如果这不可能,我的后备选项是将源文档更改为更可通过 xslt 转换的内容。但这将是一项我宁愿避免的复杂任务。
【问题讨论】:
-
"(我使用的是 Saxon PE,但认为这里的实际处理器无关紧要)" 它可能是相关的,因为 libxslt 处理以上就好了。
-
Michael.. 感谢 libxslt 的尝试。很高兴知道它在那里工作,我会注意到未来的 HTML5 转换。我很遗憾这里没有 libxslt 选项——我需要 xslt 2.0 功能(我从上面的简化演示中删除了 2.0 模板)。