在 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>