在 XPath 表达式中调用函数
Call function in XPath expression
我有一个自定义 XSLT 函数,用于测试节点的类型(涉及字符串匹配,因此它在自己的函数中),但我不确定如何在 XPath 表达式中正确使用它。 my:isType() 函数应该测试由 //cell
xpath 表达式返回的节点,而不是来自 xsl:when
.
的外部节点
<xsl:when test="...">
<my:elem>
<xsl:value-of select="//cell[@parent = @id and my:istype(., 'type')]/@id"/>
</my:elem>
</xsl:when>
另外我说的对吗,//cell[@parent = @id]
中的@id指的是外节点?
编辑:包含函数定义:
<xsl:function name="my:istype" as="xs:boolean">
<xsl:param name="element"/>
<xsl:param name="type" as="xs:string"/>
<xsl:sequence select="contains($element/@style, concat('type=', $type, ';'))"/>
</xsl:function>
正如评论中所指出的,必须使用 current()
来引用上下文节点,并且 .
用于引用 XPath 表达式中的当前单元节点。
<xsl:when test="...">
<my:elem>
<xsl:value-of select="//cell[@parent = current()/@id and my:istype(., 'type')]/@id"/>
</my:elem>
</xsl:when>
我有一个自定义 XSLT 函数,用于测试节点的类型(涉及字符串匹配,因此它在自己的函数中),但我不确定如何在 XPath 表达式中正确使用它。 my:isType() 函数应该测试由 //cell
xpath 表达式返回的节点,而不是来自 xsl:when
.
<xsl:when test="...">
<my:elem>
<xsl:value-of select="//cell[@parent = @id and my:istype(., 'type')]/@id"/>
</my:elem>
</xsl:when>
另外我说的对吗,//cell[@parent = @id]
中的@id指的是外节点?
编辑:包含函数定义:
<xsl:function name="my:istype" as="xs:boolean">
<xsl:param name="element"/>
<xsl:param name="type" as="xs:string"/>
<xsl:sequence select="contains($element/@style, concat('type=', $type, ';'))"/>
</xsl:function>
正如评论中所指出的,必须使用 current()
来引用上下文节点,并且 .
用于引用 XPath 表达式中的当前单元节点。
<xsl:when test="...">
<my:elem>
<xsl:value-of select="//cell[@parent = current()/@id and my:istype(., 'type')]/@id"/>
</my:elem>
</xsl:when>