g-punkt: gleiche elemente nur 1x anzeigen

Beitrag lesen

kewl, muss ich gleich mal ausprobieren :) THX!

Hallo g-punkt (Hast du zuviel "Helden wie wir" gelesen oder?),

Eine einfache Lösung für kleinere Dateien ist:

XML-Datei:

<?xml version="1.0"?>
<?xml-stylesheet href="doppelt.xsl" type="text/xsl"?>
<lifeforms>
  <lifeform>
   <id>jkfan-3245</id>
   <class>plant</class>
   <more/>
  </lifeform>
  <lifeform>
   <id>34424j_knnanfn</id>
   <class>animal</class>
   <more/>
  </lifeform>
  <lifeform>
   <id>tegvx-365</id>
   <class>animal</class>
   <more/>
  </lifeform>
  <lifeform>
   <id>jkfan-3245</id>
   <class>plant</class>
   <more/>
  </lifeform>
</lifeforms>

XSLT

gibt Liste von Inhalten der class-Elemente aus, wobei Doppelte eliminiert werden

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0"
                >
<xsl:variable name="classesOhneDoppelte" select="//class[not(.=following::class)]"/>
  <xsl:template match="/">
    <html>
      <head>
        <title>doppelte Elementinhalte eliminieren</title>
      </head>
      <body>
        <xsl:for-each select="$classesOhneDoppelte">
          <p>
            <xsl:value-of select="."/>
          </p>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Du liest alle Inhalte von class-Elementen in eine Variable ein, wenn es nicht ein weiteres class-Element (auf der following-Achse) gibt, das denwelben Inhalt hat.
Etwas klarer wird das, wenn Du es folgendermaßen schreibst:
<xsl:variable name="classesOhneDoppelte" select="//class[not(./text()=following::class/text())]"/>

Gruß
Franz