【问题标题】:Remove parent node altogether if the child is duplicate with other parents' child using xslt 2.0如果子节点与使用 xslt 2.0 的其他父节点的子节点重复,则完全删除父节点
【发布时间】:2019-02-05 07:41:11
【问题描述】:

输入xml- 父节点 Block 重复出现三次。我需要完全删除重复的节点,即使它在同一个 xml 中出现超过 7 次而不创建新的 xml

<Blocks>
  <Block>
     <Name>Table</Name>
     <Value>wood</Value>
  </Block>
  <Block>
     <Name>Chair</Name>
     <Value>Plastic</Value>
  </Block>
  <Block>
     <Name>Table</Name>
     <Value>wood</Value>
  </Block>
  <Block>
     <Name>Table</Name>
     <Value>wood</Value>
  </Block>
</Blocks>

执行后:

<Blocks>
  <Block>
     <Name>Table</Name>
     <Value>wood</Value>
  </Block>
  <Block>
     <Name>Chair</Name>
     <Value>Plastic</Value>
  </Block>
</Blocks>

【问题讨论】:

  • 嗯,你知道这是Block 元素与那两个孩子NameValue 元素你需要消除?那么这是一个简单的分组问题,您可以使用 XSLT 3 中的 xsl:for-each-group select="Block" composite="yes" group-by="Name, Value" 或 XSLT 2 中的 xsl:for-each-group select="Block" group-by="concat(Name, '|', Value)" 来解决。

标签: xslt xslt-2.0


【解决方案1】:
 <xsl:template match="Blocks">
 <Blocks>
   <xsl:for-each-group select="Block" group-by="Name">
     <xsl:sequence select="."/>
   </xsl:for-each-group>
 </Blocks>

xslt 2.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    相关资源
    最近更新 更多