在XSLT1.0中测试变量给出的节点是否具有特定类型的正确方法是什么,例如文本?

时间:2018-03-07 08:49:25

标签: xslt xslt-1.0

我试图编写一个接受节点作为参数的XSLT1.0模板。在该模板中,我需要测试作为参数传递的节点是否是特定类型,在我的例子中是文本节点。我可以通过self::text()和类似的结构来检查当前节点的类型,但是当有关节点由变量给出时我该怎么做呢?

这里的代码实际上是我需要的,但我认为必须有一种更直接的方法来实现这一目标。至少可以说,这$node/../text()对我来说似乎不对。

<xsl:template name="renderCommand">
    <xsl:param name="node"/>

    <xsl:variable name="nodeName">
        <xsl:choose>
            <xsl:when test="$node/../text()">
                <xsl:value-of select="name($node)"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="concat('.', name($node))"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:variable>
</xsl:template>

1 个答案:

答案 0 :(得分:1)

如果你有一个代表一个节点的变量,并想检查它是一个文本节点,那么使用when="$node/self::text()"就足够了。