2

次の2つのファイルがあります。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 が適切に翻訳されます。document-uri の次の使用法を試しました。

  • ドキュメント uri()
  • 文書URI('/')
  • ドキュメント uri('/foo')
  • ドキュメント uri('foo')
  • fn:document-uri()
  • fn:document-uri('/')
  • fn:document-uri('/foo')
  • fn:ocument-uri('foo')
4

1 に答える 1

3

document-uri()は XPath 2.0 関数であり、XPath 1.0 関数ではありません。

Internat Explorer は、XSLT 1.0 のみのプロセッサであり、XPath 2.0 を認識しない MSXML を内部的に使用します。

したがって、あなたは運が悪いです。

参考までに、現在のところ、主要な 5 つのブラウザはいずれも XSLT 2.0 を実装していません。

ブラウザーで XSLT 2.0 を使用する場合は、 Saxon CEを使用できます。

最近、Michael Kay は、Saxon CE の次のバージョンが完全にオープン ソースになると発表しました

于 2013-02-21T03:54:13.870 に答える