为未知的孩子应用XSL模板

时间:2015-07-27 18:46:34

标签: xml templates xslt

我有一个运行XSLT组件的CMS。我试图创建一个包含任意数量的未知子组件列表的包装器组件。我想知道如何循环并显示每个子组件。我有一个包装器组件的XSL模板和一个允许添加到包装器的每个子组件的模板。到目前为止,我已经完成了......

<xsl:template match="MainContentWrapper">
    <div class="wrapper-component" style="background-color:{BackgroundColor}; background-image:url('{$imagespath}/{BackgroundImage}')">
        <div class="container">
            <xsl:if test="Header != ''">
                <div class="row">
                    <div class="col-xs-12">
                        <h3 class="wrapper-header"><xsl:value-of select="Header" disable-output-escaping="yes" /></h3>
                    </div>
                </div>
            </xsl:if>

            <div class="row">
                <xsl:for-each select="*[@Name='Item']">
                    <xsl:apply-templates />
                </xsl:for-each>
            </div>
        </div>
    </div>
</xsl:template>

然后我的子组件都有自己的&#34; xsl:模板匹配&#34;模板为他们设置。我只是想让一个作者能够创建一个包装器组件,然后在任何类型的包装器中抛出尽可能多的组件,而不是一个名为组件的集合。我有道理吗?哈哈。谢谢!

1 个答案:

答案 0 :(得分:0)

使用nodelocal-namename函数来解决任意元素:

<!--Match any non-namespaced node-->
<xsl:template match="//node()[local-name() = name()]">
  <xsl:apply-templates/>
</xsl:template>

<强>参考