XSLT 无法使用 xs:output 添加 DOCTYPE
我正在使用 XSLT 创建 HTML 输出页面。我需要将文档类型添加到输出页面。 我用谷歌搜索,这似乎能够让它工作:
<xsl:output
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
/>
所以我将它添加到测试转换文件,transform.xsl:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
/>
<xsl:template match="/">
<html>
<head>
<title>test</title>
</head>
<body>
content!
</body>
</html>
</xsl:template>
</xsl:stylesheet>
但输出 HTML 不包含文档类型...。示例的其余部分......结果很好。
我做错了什么,为什么没有添加文档类型?
谢谢!
编辑:问题已解决,我正在使用 eXist,似乎 xsl:output 指令不起作用,解决方案: 邮件列表
I'm using XSLT to create a HTML output page. I need to add a doctype to the output page.
I googled and this seems to be able to get it working:
<xsl:output
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
/>
So I added it to a test transformation file, transform.xsl:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
/>
<xsl:template match="/">
<html>
<head>
<title>test</title>
</head>
<body>
content!
</body>
</html>
</xsl:template>
</xsl:stylesheet>
But the output HTML does not contain a doctype... . The rest of the example ... comes out fine.
What am I doing wrong, why isn't the doctype added?
Thanks!
EDIT: problem solved, I'm using eXist and it seems the xsl:output instruction will not work, the solution: mailing list
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我可以想到两个可能的答案
(a)您的 XSLT 处理器不符合规范,或者
(b)您的 XSLT 处理器没有执行结果树的序列化,其他的。如果序列化是由 XSLT 处理器以外的其他程序完成的(例如,如果您将输出发送到 DOM,然后使用 DOM 序列化程序),则 XSLT 序列化属性将被忽略。
I can think of two possible answers
(a) your XSLT processor is not conformant with the spec, or
(b) your XSLT processor is not doing the serialization of the result tree, something else is. If the serialization is done by something other than the XSLT processor (e.g. if you send output to a DOM and then use the DOM serializer) then the XSLT serialization properties will be ignored.