【问题标题】:XSLT - Recursing metadata keyed elementsXSLT - 递归元数据键控元素
【发布时间】:2020-07-01 10:30:43
【问题描述】:

我正在使用 XSLT v3 功能将 json 转换为 XML。假设我将生成的标准转换注入 XML“元数据”节点,我想使用 XSLT 在 html 中呈现信息。如何递归映射元素以隔离单个对象名称“MyClass”及其属性-“myName”、“myAddress”及其关联类型-“string”、“number”等...

<metadata>
    <map xmlns="http://www.w3.org/2005/xpath-functions">
        <string key="type">object</string>
        <map key="properties">
            <map key="MyClass">
                <string key="type">array</string>
                <map key="items">
                    <string key="type">object</string>
                    <map key="properties">
                       <map key="myName">
                           <string key="type">string</string>
                       </map>
                       <map key="myAddress">
                           <string key="type">string</string>
                       </map>
                       <map key="myAge">
                           <string key="type"number</string>
                       </map>
                    </map>
                </map>
             </map>
          </map>
       </map>
    </map>
</metadata>

【问题讨论】:

  • 您要为该 XML 示例创建哪个 HTML?处理 XML 时 XSLT 中的递归通常由 &lt;xsl:apply-templates/&gt; 完成。

标签: xslt-3.0


【解决方案1】:

这在很大程度上取决于您想要生成的 HTML 输出。例如,您可以使用

<xsl:template match="fn:string">
  <p>{string-join(ancestor-or-self::*/@key, '/')} = {.}</p>
  <xsl:apply-templates/>
</xsl:template>

使用xsl:apply-templates 对输入文档进行递归下降是XSLT 中非常正常的处理方式,无论输入数据是否实际上是递归的。

【讨论】:

    猜你喜欢
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 2018-07-11
    • 1970-01-01
    相关资源
    最近更新 更多