我需要一个XSLT函数,它可以返回调用它的节点的xpath。
XML
<root>
<node>
<subnode />
<subnode />
<subnode />
</node>
<node>
<subnode>
<subsubnode >
<xsl:value-of select="fn:generateXPath()" />
</subsubnode >
</subnode>
</node>
</root>
XSL
<xsl:template match="root/node/subnode/sub" >
<xsl:value-of select="fn:generateXPath()" />
</xsl:template>
<xsl:function name="fn:generateXPath" >
<xsl:for-each select="ancestor::*">
<xsl:value-of select="name()" />
</xsl:for-each>
<xsl:value-of select="name()" />
</xsl:function>
我尝试使用上面的函数,但是它抛出了一个错误:
XPDY0002: 无法在此选择节点:上下文项未定义
但是当我在一个命名模板中尝试这个函数时,我能够得到结果。是否可以使用 xslt:function
来实现这一点。
<xsl:value-of select="$pNode/ancestor::*/name()" separator="/"/>
。 - Michael Kay