使用 Muenchian 方法对元素进行分组

索尔·安斯蒂

我试图根据节点中的第一个元素将所有相同的 AsstTp 组合在一起。因此,所有 Scty 元素都在一个 AsstTp 元素下,所有 Csh 元素都在另一个 AsstTp 元素下。如下:

<RpTrad>
<AsstTp>
  <Scty>
    <Id>
      <Id>GB00B3KJDQ49</Id>
      <ClssfctnTp>DBADGC</ClssfctnTp>
      <QtyOrNmnlVal>
        <NmnlVal Ccy="EUR">1000000</NmnlVal>
      </QtyOrNmnlVal>         
    </Id>
  </Scty>
</AsstTp>
<AsstTp>
  <Scty>
    <Id>
      <Id>GB00B3KJDP50</Id>
      <ClssfctnTp>DBADGC</ClssfctnTp>
      <QtyOrNmnlVal>
        <NmnlVal Ccy="GBP">1100000</NmnlVal>
      </QtyOrNmnlVal>         
    </Id>
  </Scty>
</AsstTp>
<AsstTp>
  <Scty>
    <Id>
      <Id>GB00B3KJDR51</Id>
      <ClssfctnTp>DBADGC</ClssfctnTp>
      <QtyOrNmnlVal>
        <NmnlVal Ccy="CHF">1200000</NmnlVal>
      </QtyOrNmnlVal>         
    </Id>
  </Scty>
</AsstTp>
<AsstTp>
  <Csh>
    <Id>
      <Id>US1234567890</Id>
      <ClssfctnTp>EABCDE</ClssfctnTp>
      <QtyOrNmnlVal>
        <Qty>10000</Qty>
      </QtyOrNmnlVal>         
    </Id>
  </Csh>
</AsstTp>
</RpTrad>

应该变成...

<RpTrad>
<AsstTp>
  <Scty>
    <Id>
      <Id>GB00B3KJDQ49</Id>
      <ClssfctnTp>DBADGC</ClssfctnTp>
      <QtyOrNmnlVal>
        <NmnlVal Ccy="EUR">1000000</NmnlVal>
      </QtyOrNmnlVal>         
    </Id>
  </Scty>
  <Scty>
    <Id>
      <Id>GB00B3KJDP50</Id>
      <ClssfctnTp>DBADGC</ClssfctnTp>
      <QtyOrNmnlVal>
        <NmnlVal Ccy="GBP">1100000</NmnlVal>
      </QtyOrNmnlVal>         
    </Id>
  </Scty>
  <Scty>
    <Id>
      <Id>GB00B3KJDR51</Id>
      <ClssfctnTp>DBADGC</ClssfctnTp>
      <QtyOrNmnlVal>
        <NmnlVal Ccy="CHF">1200000</NmnlVal>
      </QtyOrNmnlVal>         
    </Id>
  </Scty>
</AsstTp>   
<AsstTp>
  <Csh>
    <Id>
      <Id>US1234567890</Id>
      <ClssfctnTp>EABCDE</ClssfctnTp>
      <QtyOrNmnlVal>
        <Qty>10000</Qty>
      </QtyOrNmnlVal>         
    </Id>
  </Csh>
</AsstTp>
</RpTrad>

我目前正在尝试使用以下 XSLT,但它似乎只是重复了我 4 次:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ext="http://exslt.org/common">

<xsl:key name="Coll-by-AsstTp" match="AsstTp" use="local-name()" />
<xsl:template match="RpTrad">
    <xsl:for-each select="AsstTp[count(. | key('Coll-by-AsstTp', local-name())[1]) = 1]">       
        <xsl:for-each select="key('Coll-by-AsstTp', local-name())">
            <xsl:copy-of select="/node()" />
        </xsl:for-each>
    </xsl:for-each>
</xsl:template>

所以我相信创建我的密钥和使用 local-name() 函数没有获取它需要的正确元素值有问题。从而导致 for 循环运行多次并且不会更深入地仅复制每个 AsstTp 的内部节点。

提前致谢,扫罗

michael.hor257k

您想AsstTp按其子元素的名称对元素进行分组- 因此您的键应定义为:

<xsl:key name="asstTp-by-child" match="AsstTp" use="local-name(*)" />

然后:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:key name="asstTp-by-child" match="AsstTp" use="local-name(*)" />

<xsl:template match="/RpTrad">
    <xsl:copy>
        <xsl:for-each select="AsstTp[count(. | key('asstTp-by-child', local-name(*))[1]) = 1]"> 
            <xsl:copy>    
                <xsl:copy-of select="key('asstTp-by-child', local-name(*))/*"/>
            </xsl:copy>
        </xsl:for-each>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

将返回您想要的结果。


注意

指令:

<xsl:copy-of select="/node()" />

将复制整个 XML 文档,从根节点开始,无论当前上下文如何。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用XSLT muenchian-group的嵌套分组

来自分类Dev

使用XSLT muenchian-group的嵌套分组

来自分类Dev

使用XSL-FO表进行Muenchian分组

来自分类Dev

使用XSLT 1.0版进行Muenchian分组,排序和过滤

来自分类Dev

使用XSL-FO表进行Muenchian分组

来自分类Dev

嵌套元素的Muenchian方法

来自分类Dev

Muenchian分组和/ *

来自分类Dev

多级Muenchian分组

来自分类Dev

Muenchian分组XSLT

来自分类Dev

Muenchian分组混淆(XSLT)

来自分类Dev

XSLT Muenchian方法

来自分类Dev

使用xslt(muenchian分组)将平面xml分组,无法将其分组

来自分类Dev

我想更好地了解使用Muenchian分组的XSLT 1.0嵌套分组

来自分类Dev

使用XSLT 1.0 Muenchian分组创建HTML输出时,排序失败

来自分类Dev

XSLT聚合,使用基于Muenchian方法的最小和最大排序

来自分类Dev

结合Kayessian交集和Muenchian分组

来自分类Dev

Muenchian分组中的[1]真的必要吗?

来自分类Dev

XSLT v1.0-Muenchian分组问题

来自分类Dev

XSLT Muenchian 分组在组内创建密钥

来自分类Dev

所有节点的 XSLT MUENCHIAN 方法

来自分类Dev

Muenchian分组样式表返回重复的未分组节点

来自分类Dev

使用分组依据对元素进行分组

来自分类Dev

XSLT muenchian按子节点中的值分组

来自分类Dev

如何使用JAXB对元素进行逻辑分组?

来自分类常见问题

使用JavaScript在一组数组元素中进行分组(基于标头的动态输入的简便分组方法)

来自分类Dev

使用JavaScript在一组数组元素中进行分组(基于标头的动态输入的简便分组方法)

来自分类Dev

使用javascript对元素列表进行分类/分组和排序的最佳方法是什么?

来自分类Dev

使用javascript对元素列表进行分类/分组和排序的最佳方法是什么?

来自分类Dev

基于使用Scala对元素进行分组的元素总数?

Related 相关文章

  1. 1

    使用XSLT muenchian-group的嵌套分组

  2. 2

    使用XSLT muenchian-group的嵌套分组

  3. 3

    使用XSL-FO表进行Muenchian分组

  4. 4

    使用XSLT 1.0版进行Muenchian分组,排序和过滤

  5. 5

    使用XSL-FO表进行Muenchian分组

  6. 6

    嵌套元素的Muenchian方法

  7. 7

    Muenchian分组和/ *

  8. 8

    多级Muenchian分组

  9. 9

    Muenchian分组XSLT

  10. 10

    Muenchian分组混淆(XSLT)

  11. 11

    XSLT Muenchian方法

  12. 12

    使用xslt(muenchian分组)将平面xml分组,无法将其分组

  13. 13

    我想更好地了解使用Muenchian分组的XSLT 1.0嵌套分组

  14. 14

    使用XSLT 1.0 Muenchian分组创建HTML输出时,排序失败

  15. 15

    XSLT聚合,使用基于Muenchian方法的最小和最大排序

  16. 16

    结合Kayessian交集和Muenchian分组

  17. 17

    Muenchian分组中的[1]真的必要吗?

  18. 18

    XSLT v1.0-Muenchian分组问题

  19. 19

    XSLT Muenchian 分组在组内创建密钥

  20. 20

    所有节点的 XSLT MUENCHIAN 方法

  21. 21

    Muenchian分组样式表返回重复的未分组节点

  22. 22

    使用分组依据对元素进行分组

  23. 23

    XSLT muenchian按子节点中的值分组

  24. 24

    如何使用JAXB对元素进行逻辑分组?

  25. 25

    使用JavaScript在一组数组元素中进行分组(基于标头的动态输入的简便分组方法)

  26. 26

    使用JavaScript在一组数组元素中进行分组(基于标头的动态输入的简便分组方法)

  27. 27

    使用javascript对元素列表进行分类/分组和排序的最佳方法是什么?

  28. 28

    使用javascript对元素列表进行分类/分组和排序的最佳方法是什么?

  29. 29

    基于使用Scala对元素进行分组的元素总数?

热门标签

归档