XSLT删除重复的元素值

  • 本文关键字:元素 删除 XSLT xml xslt
  • 更新时间 :
  • 英文 :


这是我的xml:

<?xml version="1.0" encoding="UTF-8"?>
<MD_LegalConstraints>
<otherConstraints><CharacterString>Test 1</CharacterString></otherConstraints>
<otherConstraints><CharacterString>Test 2</CharacterString></otherConstraints>
<otherConstraints><CharacterString>Test 1</CharacterString></otherConstraints>
<otherConstraints><CharacterString>Test 3</CharacterString></otherConstraints>
</MD_LegalConstraints>

我想把上面的xml翻译如下:

<?xml version="1.0" encoding="UTF-8"?>
<data>
<rights>
<rightsStatement>Test 1</rightsStatement>
</rights>
<rights>
<rightsStatement>Test 2</rightsStatement>
</rights>
<rights>
<rightsStatement>Test 3</rightsStatement>
</rights>
</data>

我尝试遵循(XSL删除重复记录)来转换和删除重复的值。但是它仍然包含重复的值(xslt version = 2.0)

<xsl:key name="legal-text" match="otherConstraints" use="."/>
<xsl:template match="MD_LegalConstraints">
<data>
<xsl:for-each select="otherConstraints[count(. | key('legal-text', .)[1]) = 1]">
<rights>
<rightsStatement>
<xsl:value-of select="."/>
</rightsStatement>
</rights>
</xsl:for-each>
</data>
</xsl:template>

也许这对你(2.0)有帮助,正如Martin Honnen在评论中提出的那样:

<xsl:template match="MD_LegalConstraints">
<xsl:for-each-group select="otherConstraints/CharacterString" group-by=".">
<!-- do something -->
</xsl:for-each-group>
</xsl:template>

最新更新