测试结果树片段

时间:2015-07-27 11:07:06

标签: xslt xslt-1.0 msxsl

我试图创建一个模板,该模板要么显示一些内容,要么插入一个占位符来表示内容不存在:

<xsl:template name="information">
    <xsl:param name="content">
    <xsl:choose>
        <xsl:when test="$content">
            <Content>
                <xsl:apply-templates select="$content/node()" />
            </Content>
        </xsl:when>
        <xsl:otherwise>
            <PlaceHolder/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

这很有效,直到content是结果树片段:

<xsl:call-template name="information">
    <xsl:with-param name="content">Yes</content>
</xsl:call-template>

我使用的是Microsoft .NET XSLT引擎,因此我可以在参数上调用msxsl:node-set()来获取可行的节点集,但我不知道如何测试参数需要这种治疗。到目前为止,生成内容的情况较小。

有没有办法让这个模板适用于正确的节点集结果树片段?

1 个答案:

答案 0 :(得分:1)

.NET 2.0及更高版本中的

XslCompiledTransform支持exsl:object-type http://exslt.org/exsl/functions/object-type/index.html,因此您可以根据需要检查变量的类型。另一方面,我不认为在节点集上调用msxsl:node-set而不是结果树片段存在问题,它只是返回未更改的节点集。