我试图编写一个接受节点作为参数的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>
答案 0 :(得分:1)
如果你有一个代表一个节点的变量,并想检查它是一个文本节点,那么使用when="$node/self::text()"
就足够了。