【问题标题】:Applying XSL templates for unknown children为未知子应用 XSL 模板
【发布时间】:2015-07-27 18:46:34
【问题描述】:

我有一个运行 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>

然后我的子组件都为它们设置了自己的“xsl:template match”模板。我只希望作者能够创建一个包装器组件,然后将尽可能多的组件放入任何类型的包装器中,而不是一组命名组件。我说得有道理吗?哈哈。谢谢!

【问题讨论】:

  • 我说得通吗?”对我来说不是。为什么不发布一个 XML 输入和预期输出的小示例?

标签: xml templates xslt


【解决方案1】:

使用nodelocal-namename 函数来寻址任意元素:

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

参考文献

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 2014-03-18
    • 2021-03-24
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多