Felix Hoesch: Attribut in vorheriger Node vergleichen

Hallo zusammen,

kann mir jemand ein Beispiel angeben, wie ich mit XSL das jeweils gleiche Attribut in zwei aufeinanderfolgenden Nodes vergleichen kann. Denn wenn es zwei mal gleich ist, will ich es nur einmal ausgeben und kann so eine Liste mit teilweise redundanten Einträgen schöner darstellen.

Vielen Dank für Eure Hilfe
Felix

  1. Hallo,

    kann mir jemand ein Beispiel angeben, wie ich mit XSL das jeweils gleiche Attribut in zwei aufeinanderfolgenden Nodes vergleichen kann.

    -------- xml ---------
    <?xml version="1.0" encoding="iso-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="test.xsl"?>
    <data>
    <element attribut="apfel"></element>
    <element attribut="birne"></element>
    <element attribut="banane"></element>
    <element attribut="erdbeere"></element>
    <element attribut="apfel"></element>
    <element attribut="apfel"></element>
    <element attribut="melone"></element>
    <element attribut="pflaume"></element>
    <element attribut="pflaume"></element>
    </data>

    ------------- xslt -----
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/data">
     <html><head><title>Test</title></head>
      <body>
       <xsl:apply-templates select="element" />
      </body>
     </html>
    </xsl:template>

    <xsl:template match="element">
     xsl:choose
      <xsl:when test="@attribut = following-sibling::element[1]/@attribut">
       <xsl:value-of select="@attribut" /><strong>(Duplikat existiert)</strong><br />
      </xsl:when>
      <xsl:when test="@attribut = preceding-sibling::element[1]/@attribut"></xsl:when>
      xsl:otherwise
       <xsl:value-of select="@attribut" /><br />
      </xsl:otherwise>
     </xsl:choose>
    </xsl:template>
    </xsl:stylesheet>

    ------------------ Ausgabe -------
    apfel
    birne
    banane
    erdbeere
    apfel(Duplikat existiert)
    melone
    pflaume(Duplikat existiert)

    Grüße
    Thomas