gpt4 book ai didi

xslt - 如何在 XSLT 2.0 中使用 xpath 函数?

转载 作者:行者123 更新时间:2023-12-03 15:50:01 25 4
gpt4 key购买 nike

为了使用xpath-functions (特别是 fn 部分),我将相应的命名空间包含到我的 xslt 样式表中,如下所示:

<xsl:stylesheet
version="2.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
>

作为specified由 W3C 提供。

但是,当我使用 fn:document-uri 时,我的 XSLT 引擎告诉我我调用了一个未知的函数/扩展:

  <xsl:variable name="uri" select="fn:document-uri()" />

歌剧说:

This document had an invalid XSLT stylesheet. Error message from the XSLT engine:
Error: XPath expression compilation failed: fn:document-uri()
Details: compilation error (characters 1-17, "fn:document-uri()"): unknown function called: '{ http://www.w3.org/2005/xpath-functions, document-uri }'

Firefox 说:

Error during XSLT transformation: An unknown XPath extension function was called.

xsltproc 拒绝转换,因为 xslt 2.0。

那么,如何正确指定fn 命名空间呢?

最佳答案

问题是您使用的是 XSLT 1.0 处理器,而 XSLT 1.0 处理器不知道(而且一定不知道)有关 XPath 2.0 函数的任何信息

如果您使用真正的 XSLT 2.0 处理器,您甚至不必指定函数 namespace ——它是任何无前缀函数名称的默认 namespace 。

例如,这个 XSLT 2.0 转换:

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

<xsl:template match="/">
<xsl:sequence select="document-uri(.)" />
<xsl:text>&#xA;</xsl:text>
<xsl:sequence select="document-uri(document(''))" />
</xsl:template>
</xsl:stylesheet>

在 XSelerator 下使用 Saxon 9.1.5 执行时,正确生成源 XML 文档的 URL 和样式表本身:

file:/C:/Program%20Files/Java/jre6/bin/marrowtr.xml
file:/C:/Program%20Files/Java/jre6/bin/marrowtr.xsl

关于xslt - 如何在 XSLT 2.0 中使用 xpath 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10067551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com