这是我的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>