0

我正在尝试创建一个模板,该模板要么呈现一些内容,要么插入一个占位符以指示内容的缺失:

<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()一个参数来获得一个可行的节点集,但我不知道如何测试该参数是否需要这种处理。到目前为止,生成内容的情况较少。

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

4

1 回答 1

1

XslCompiledTransform在 .NET 2.0 及更高版本中支持exsl:object-type http://exslt.org/exsl/functions/object-type/index.html,因此您可以在需要时检查变量的类型。另一方面,我认为调用msxsl:node-set节点集而不是结果树片段没有问题,它只是简单地返回节点集不变。

于 2015-07-27T11:32:48.930 回答