Hallo,
ich habe folgendes XML:
<?xml version="1.0" encoding="iso-8859-1"?>
<definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<definition>
<term>
<de>Life-Cycle</de>
<en>Life Cycle</en>
</term>
<description>
<de>
<txt>Deutsche Erklärung</txt>
</de>
<en>
<txt>Englische Erklärung</txt>
</en>
</description>
</definition>
<definition>
<term>
<de>Lebenszyklus</de>
<en>Life Cycle</en>
</term>
<description>
<de>
<txt>Deutsche Erklärung</txt>
</de>
<en>
<txt>Englische Erklärung</txt>
</en>
</description>
</definition>
</definitions>
Und ich will aus der Liste der sehr vielen <definition> doppelte Einträge im <term><de> bzw. doppelte Einträge im <term><en> identifizieren und sichtbar machen.
Leider funktioniert mein Code mit dem key() nicht. Habe zwei unterschiedliche Tests für <en> gemacht, beide sinnlos... Vielleicht habt ihr ja eine Ahnung, wo mein Fehler liegt?
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xslt="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="xs" version="2.0">
<xsl:output method="xml" encoding="UTF-8"/>
<xsl:key use="de" match="term" name="termkeyde"/>
<xsl:key use="en" match="term" name="termkeyen"/>
<xsl:template match="/definitions">
<doubleterms>
<xsl:if test="definition/term[count(key('termkeyen', en)) > 1]">
<test1>
<xsl:value-of select="de/text()"/>
</test1>
</xsl:if>
<xsl:if test="definition/term[generate-id()= generate-id(key('termkeyen',en)[2])]">
<test2>
<xsl:value-of select="en/text()"/>
</test2>
</xsl:if>
</doubleterms>
</xsl:template>
</xsl:stylesheet>
Schonmal besten Dank! Viele Grüße, Janine