Xml XSL:避免具有不同父节点的重复节点

Xml XSL:避免具有不同父节点的重复节点,xml,xslt,Xml,Xslt,我有一个XML,看起来像这样 <list> <item> <name>A</name> <name>B</name> <name>C</name> </item> <item> <name>B</name> </item> <item

我有一个XML,看起来像这样

<list>
    <item>
        <name>A</name>
        <name>B</name>
        <name>C</name>
    </item>
    <item>
        <name>B</name>
    </item>
    <item>
        <name>B</name>
        <name>A</name>
    </item>
    <item>
        <name>B</name>
        <name>C</name>
        <name>A</name>
    </item>
</list>

A.
B
C
B
B
A.
B
C
A.
我需要得到没有重复元素的元素

<items>
    <name>A</name>
    <name>B</name>
    <name>C</name>
</items>

A.
B
C
像这样^

XSLT2.0解决方案 使用

此XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">
    <items>
      <xsl:for-each select="distinct-values(//name)">
        <name>
          <xsl:value-of select="."/>
        </name>
      </xsl:for-each>
    </items>
  </xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<items>
   <name>A</name>
   <name>B</name>
   <name>C</name>
</items>

将产生此XML输出:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">
    <items>
      <xsl:for-each select="distinct-values(//name)">
        <name>
          <xsl:value-of select="."/>
        </name>
      </xsl:for-each>
    </items>
  </xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<items>
   <name>A</name>
   <name>B</name>
   <name>C</name>
</items>

A.
B
C

根据要求提供XML输入文件。

下面是一个XSLT 1.0解决方案,使用:


搜索XSLT分组。请注意,您使用的XSLT-1.0或2.0版本在这里有很大的不同。