# Mit XSL doppelte Einträge aussortieren



## CelikBlek (22. Dez 2004)

Hallo,
habe mal eine Frage.
Ich habe eine XML Datei in dem Beispielsweise Elemente wie

```
...
<name>Blau</name>
<name>Schwarz</name>
<name>Rot</name>
<name>Blau</name>
...
```
vorkommen. Nun werden sie von XSL eingelesen und als HTML dargestellt,

```
<xsl:for-each select="...........">
   <xsl:if test="position()!=1">
      <xsl:value-of select="', '"/>
   </xsl:if>
   <xsl:value-of select="."/>
</xsl:for-each>
```
*Daraus folgt folgende Ausgabe:*Blau, Schwarz, Rot, Blau

*Problem oder Frage:*Ich möchte gerne doppelte Einträge rausfiltern. Wie mache ich es?
Ausgabe soll Blau, Schwarz, Rot sein.

Danke für eure hilfe.


----------



## Bleiglanz (22. Dez 2004)

http://www.dpawson.co.uk/xsl/sect2/N2696.html


----------



## CelikBlek (22. Dez 2004)

bislang habe ich ja wie folgt auf meine Inhalte zugegriffen
...select="."...

wie sieht es denn dann aus?
so?
select="reference[not(.=following::reference/.)]"
könntest du mir passend zur oberen die passenden codezeile schreiben?


----------



## CelikBlek (23. Dez 2004)

Irgendwie funktioniert es nicht :-(


----------



## Bleiglanz (23. Dez 2004)

```
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
  <xsl:apply-templates />
</xsl:template>
                                                                                
<xsl:template match="root">
  <xsl:for-each select="name[not(.=following::name)]">
    <xsl:if test="position()!=1">
      <xsl:value-of select="', '"/>
    </xsl:if>
    <xsl:value-of select="."/>
  </xsl:for-each>
</xsl:template>
</xsl:stylesheet>
```

macht das richtige mit


```
<?xml version="1.0"?>
<root>
<name>Blau</name>
<name>Schwarz</name>
<name>Rot</name>
<name>Blau</name>
<name>Gruen</name>
<name>Schwarz</name>
<name>Rot</name>
</root>
```


----------

