如何在Internet Explorer中的xslt文件中将document-uri显示为html文档中的文本?

时间:2013-02-21 03:46:19

标签: xml internet-explorer xslt internet-explorer-9 xslt-2.0

我有以下两个文件。当我尝试在Internet Explorer 9中查看xml文档时,它不会使用xslt文件进行翻译。

我的xml文件

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="xsl.xslt"?>
<foo>
  <bar>baz</bar>
</foo>

我的xslt文件

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
                xmlns:fn="http://www.w3.org/2005/xpath-functions"
>
    <xsl:output method="html"/>
  <xsl:template match="/">
    <html>
      <head>
        <title>
          <xsl:value-of select="/foo/bar"/>
        </title>
      </head>
      <body>

        <!-- It works if i remove the following xsl:value-of tag -->

        <xsl:value-of select="document-uri()"/>
        <div style="color: #ff0000;">
          <xsl:value-of select="/foo/bar/text()"/>
        </div>
        <div style="color: #ff0000;">RED</div>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

当我删除<xsl:value-of select="document-uri()"/>标记时,xml已正确翻译。 我尝试过以下文档用法:uri:

  • 文档-URI()
  • 文档的URI( '/')
  • 文档-URI( '/富')
  • 文档-URI( '富')
  • FN:文件-URI()
  • FN:文件-URI( '/')
  • FN:文件-URI( '/富')
  • FN:ocument-URI( '富')

1 个答案:

答案 0 :(得分:3)

document-uri()是一个XPath 2.0函数 - 而不是XPath 1.0函数。

Internat Explorer内部使用MSXML,它只是一个XSLT 1.0处理器,不了解XPath 2.0。

因此,你运气不好。

仅供参考 - 目前5个主流浏览器中没有一个实现XSLT 2.0。

如果您想在浏览器中使用XSLT 2.0,可以使用 Saxon CE 进行操作。

最近Michael Kay宣布下一版Saxon CE将完全开源 - 现在可以使用