【问题标题】:XSLT - Split node and group itemsXSLT - 拆分节点和组项目
【发布时间】:2021-11-29 12:11:54
【问题描述】:

我是 XSLT 的新手,挑战以下要求:

来源:

<item>
  <name>123-foo</name>
  <value>xxx</value>
</item>
<item>
  <name>123-bar</name>
  <value>yyy</value>
</item>
<item>
  <name>456-foo</name>
  <value>zzz</value>
</item>
<item>
  <name>456-bar</name>
  <value>aaa</value>
</item>

应该是这样的:

<item>
  <key>123</key>
  <control>foo</control>
  <value>xxx</value>
</item>
<item>
  <key>123</key>
  <control>bar</control>
  <value>yyy</value>
</item>
<item>
  <key>456</key>
  <control>foo</control>
  <value>zzz</value>
</item>
<item>
  <key>456</key>
  <control>bar</control>
  <value>aaa</value>
</item>

附加要求:应跳过列表的前两项。

在第二步中,这些项目应该按键分组。

<xsl:for-each-group select="*" group-by="key"> 
 <!-- do something with each grouped item -->
</xsl:for-each-group> 

我怎样才能做到这一点?我已经有一个名为 $data 的变量来获取每个源项的值。 示例:&lt;xsl:value-of select="$data/123-foo"&gt;&lt;/xsl:value-of&gt; 将输出“xxx”,但我不确定这是否有帮助。

【问题讨论】:

    标签: xslt xslt-2.0 xslt-grouping


    【解决方案1】:

    您可以一步完成:

        <xsl:for-each-group select="item" group-by="substring-before(name, '-')"> 
            <group>
                <xsl:for-each select="current-group()"> 
                    <item>
                        <key>
                            <xsl:value-of select="current-grouping-key()"/>
                        </key>
                        <control>
                            <xsl:value-of select="substring-after(name, '-')"/>
                        </control>
                        <xsl:copy-of select="value"/>
                    </item>
                </xsl:for-each>
            </group>
        </xsl:for-each-group>
    

    演示:https://xsltfiddle.liberty-development.net/gVAkJ5m

    不知道你的意思:

    应该跳过列表的前两项。

    【讨论】:

      【解决方案2】:

      使用 group-by=“substring-before(., ‘-‘)”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-25
        • 1970-01-01
        • 2012-09-04
        • 1970-01-01
        • 1970-01-01
        • 2021-12-05
        相关资源
        最近更新 更多