合并具有相同属性的元素

基里尔

我有一个 xml 文档:

<bans>
  <ban job="gh:test/test#1">
    <login>user1</login>
    <reason>reason one</reason>
  </ban>
  <ban job="gh:test/test#1">
    <login>user1</login>
    <reason>reason two</reason>
  </ban>
  <ban job="gh:test/test#1">
    <login>user2</login>
    <reason>reason three</reason>
  </ban>
  <ban job="gh:test/test#2">
    <login>user1</login>
    <reason>reason four</reason>
  </ban>
  <ban job="gh:test/test#1">
    <login>user2</login>
    <reason>reason five</reason>
  </ban>
</bans>

如何与xslt合并属性和值相同的所有ban元素从最新的值中选择值?jobloginreason

在这个例子中,我想将第一个与第二个ban元素合并,因为它们都有job="gh:test/test#1"<login>user1</login>,第三个与第五元素合并,所以转换的结果应该是这样的:

<bans>
  <ban job="gh:test/test#1">
    <login>user1</login>
    <reason>reason two</reason>
  </ban>
  <ban job="gh:test/test#2">
    <login>user1</login>
    <reason>reason four</reason>
  </ban>
  <ban job="gh:test/test#1">
    <login>user2</login>
    <reason>reason five</reason>
  </ban>
</bans>
马丁·霍南

使用 XSLT 3,您可以使用<xsl:for-each-group select="ban" group-by="@job, login" composite="yes">

xsl:for-each-group

如果存在group-bygroup-adjacent属性中的任何一个,则为总体中的每个项目计算一组分组键,如下所示:评估group-byorgroup-adjacent属性中包含的表达式结果被雾化;并且任何xs:untypedAtomic值都被转换为xs:string.

如果composite="yes"指定,则有一个单独的分组键,其值为结果序列;否则,有一组分组键,由结果序列中存在的不同原子值组成。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="3.0">

  <xsl:mode on-no-match="shallow-copy"/>

  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="bans">
      <xsl:copy>
          <xsl:for-each-group select="ban" composite="yes" group-by="@job, login">
              <xsl:copy-of select="current-group()[last()]"/>
          </xsl:for-each-group>
      </xsl:copy>
  </xsl:template>
  
</xsl:stylesheet>

http://xsltfiddle.liberty-development.net/nbUY4ks

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

合并具有相同属性的Rails对象

来自分类Dev

具有相同属性的元素的定位器

来自分类Dev

CSS:调用具有相同属性的任何元素

来自分类Dev

LinQ GroupBy对具有相同属性的嵌套元素

来自分类Dev

从列表生成具有相同属性的对

来自分类Dev

具有几乎相同属性的模型

来自分类Dev

创建具有相同属性的方法

来自分类Dev

如何合并具有相同属性的RDF主题,对其值求和?

来自分类Dev

CSS Minifier合并具有相同属性的选择器

来自分类Dev

在GenomicRanges对象中合并具有相同属性的相邻垃圾箱

来自分类Dev

XML - XSLT 元素列表 - 连接具有相同属性值的元素

来自分类Dev

Java-如何从集合中删除具有相同属性值的元素?

来自分类Dev

如何获得具有相同属性的同一级别的元素或数据列表?

来自分类Dev

反序列化具有相同属性的xml元素

来自分类Dev

PHP - 在循环中加入具有相同属性的元素

来自分类Dev

jQuery:检查具有相同属性的元素是否存在多次

来自分类Dev

将具有相同属性的两个对象的方法合并到每个属性的数组中

来自分类Dev

将具有相同属性的两个对象的方法合并到每个属性的数组中

来自分类Dev

如何在硒中的不同标签中定位具有相同名称和相同属性的元素

来自分类Dev

合并具有相同属性但ID不同的NSManagedObject,与iCloud同步会导致重复(Core Data,Swift 1.2)

来自分类Dev

将两个数据集合并为一个,并获得具有相同属性的列的均值

来自分类Dev

将具有相同属性名称的多个元素转换为具有这些属性值作为子元素的新元素

来自分类Dev

Javascript-添加具有不同值的相同属性

来自分类Dev

具有相同属性名称的AutoMapper TwoWay映射

来自分类Dev

GraphViz文件中具有相同属性的节点组

来自分类Dev

计算具有相同属性值的对象

来自分类Dev

在matplotlib中绘制具有相同属性的多个函数

来自分类Dev

Sparql查询:查找具有相同属性对象的对象

来自分类Dev

Rails:尝试渲染具有相同属性的用户的图像

Related 相关文章

  1. 1

    合并具有相同属性的Rails对象

  2. 2

    具有相同属性的元素的定位器

  3. 3

    CSS:调用具有相同属性的任何元素

  4. 4

    LinQ GroupBy对具有相同属性的嵌套元素

  5. 5

    从列表生成具有相同属性的对

  6. 6

    具有几乎相同属性的模型

  7. 7

    创建具有相同属性的方法

  8. 8

    如何合并具有相同属性的RDF主题,对其值求和?

  9. 9

    CSS Minifier合并具有相同属性的选择器

  10. 10

    在GenomicRanges对象中合并具有相同属性的相邻垃圾箱

  11. 11

    XML - XSLT 元素列表 - 连接具有相同属性值的元素

  12. 12

    Java-如何从集合中删除具有相同属性值的元素?

  13. 13

    如何获得具有相同属性的同一级别的元素或数据列表?

  14. 14

    反序列化具有相同属性的xml元素

  15. 15

    PHP - 在循环中加入具有相同属性的元素

  16. 16

    jQuery:检查具有相同属性的元素是否存在多次

  17. 17

    将具有相同属性的两个对象的方法合并到每个属性的数组中

  18. 18

    将具有相同属性的两个对象的方法合并到每个属性的数组中

  19. 19

    如何在硒中的不同标签中定位具有相同名称和相同属性的元素

  20. 20

    合并具有相同属性但ID不同的NSManagedObject,与iCloud同步会导致重复(Core Data,Swift 1.2)

  21. 21

    将两个数据集合并为一个,并获得具有相同属性的列的均值

  22. 22

    将具有相同属性名称的多个元素转换为具有这些属性值作为子元素的新元素

  23. 23

    Javascript-添加具有不同值的相同属性

  24. 24

    具有相同属性名称的AutoMapper TwoWay映射

  25. 25

    GraphViz文件中具有相同属性的节点组

  26. 26

    计算具有相同属性值的对象

  27. 27

    在matplotlib中绘制具有相同属性的多个函数

  28. 28

    Sparql查询:查找具有相同属性对象的对象

  29. 29

    Rails:尝试渲染具有相同属性的用户的图像

热门标签

归档