我可以检查一个XSLT参数是否是" templatable"在运行apply-templates之前?

时间:2014-05-22 11:10:29

标签: xslt xslt-2.0

我的XSLT中有一个参数,通常是我应用模板的一组合适的节点。

<apply-templates select="$conferences" />

但是,有时出现问题,它会以字符串形式出现。在这种情况下,我只想跳过应用模板。但检查这个的正确方法是什么?我可以检查它当然不是一串,但我如何检查参数是否......“可以”?

<if test=" ? ">
    <apply-templates select="$conferences" />
</if>

2 个答案:

答案 0 :(得分:3)

由于您使用的是XSLT 2.0,因此只需执行

即可
<xsl:if test="$conferences instance of node()*">

答案 1 :(得分:1)

你可以这样做:

<apply-templates select="$conferences/*" />

只有在其中包含XML时才适用。字符串将不会被应用。

如果您想提前做好准备,请执行以下操作:

<xsl:choose>
    <xsl:when test="count($conferences/*) &gt; 0"> <!-- it is XML -->
        <xsl:apply-templates select="$conferences/*" />
    </xsl:when>
    <xsl:otherwise>
        <xsl:apply-templates select="$conferences" /> <!-- it is not XML -->
    </xsl:otherwise>
</xsl:choose>