как отобразить document-uri как текст в html-документе из файла xslt в Internet Explorer?

У меня есть следующие два файла. Когда я пытаюсь просмотреть XML-документ в Internet Explorer 9, он не переводится с использованием файла 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: документ-uri()
  • fn: документ-uri ('/')
  • fn: документ-uri('/foo')
  • fn: ocument-uri('foo')

person Charles Lambert    schedule 21.02.2013    source источник


Ответы (1)


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.

Недавно Майкл Кей объявил, что следующая версия Saxon CE будет с полностью открытым исходным кодом, и она доступна уже сейчас.

person Dimitre Novatchev    schedule 21.02.2013