【发布时间】:2011-01-27 08:25:22
【问题描述】:
据我了解,以空字符串为参数的 XSLT 函数 document() 应读取当前 XSLT 文档。但是下面的代码不起作用:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<state>test2</state>
<xsl:template match="/">
test1
<xsl:value-of select="document('')/*/state"/>
</xsl:template>
</xsl:stylesheet>
当我将此 XSLT 应用于某些 XML(仅作为示例)时,我只有“test1”作为输出。为什么行
<xsl:value-of select="document('')/*/state"/>
不打印“test2”?
【问题讨论】:
-
你是如何运行转换的?
-
为我工作。通过 Eclipse XSL Transformer 运行时,我得到了
test1和test2。 -
如果您在Windows上使用MSXML库,您可能需要启用文档功能:
styledocument.setProperty("AllowDocumentFunction", true);见msdn.microsoft.com/en-us/library/ms256465.aspx -
我使用 xalan,它是 java 6 的一部分
-
任何运行该样式表的尝试都会导致一些错误消息,例如“xsl:stylesheet 的子元素必须绑定到命名空间”