Alle Attribute anzeigen, aber keine Duplikate
hh
- xsl
0 Thomas J.S.0 hh
Hallo,
ich fuehle mich schon wieder als Depp und scheitere an einer eigentlich scheinbar leichter Aufgabe.
Ich möchte in ein Listenfeld alle verfügbaren Werte eines Attributes ausgeben, ohne dass sich natuerlich doppelt bzw. mehrfach vorhandene Werte wiederholen.
XML ungefähr so:
<root>
<element ausgabe="wert1">something</element>
<element ausgabe="wert2">something</element>
<element ausgabe="wert2">something</element>
<element ausgabe="wert1">something</element>
<element ausgabe="wert8">something</element>
<element ausgabe="wert10">something</element>
<root>
So jetzt muesste ich irgendwie eine xsl:for-each stricken, so dass mir
wert1
wert2
wert8
wert10
ausgibt. eine
<xsl:for-each select="/*/*/@ausgabe">
<xsl:value-of select="."/>
</xsl:for-each>
gibt mir ja nun alle aus, da ja auch alle angesprochen werden. Habe etwas mit preceding-sibling gelesen, aber weiss nicht, ob ich dass hier brauche.
Gruß, Holger
Hallo,
Ich möchte in ein Listenfeld alle verfügbaren Werte eines Attributes ausgeben, ohne dass sich natuerlich doppelt bzw. mehrfach vorhandene Werte wiederholen.
So jetzt muesste ich irgendwie eine xsl:for-each stricken, so dass mirwert1
wert2
wert8
wert10ausgibt.
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="att" match="element" use="@ausgabe" />
<xsl:template match="/">
<html><head></head><body>
<xsl:apply-templates />
</body></html>
</xsl:template>
<xsl:template match="root">
<xsl:for-each select="element[generate-id(.) = generate-id(key('att', @ausgabe)[1])]">
<xsl:value-of select="@ausgabe" /><br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Grüße
Thomas
Hallo Thomas,
wei immer genial einfach und ...
.. es funktioniert ;-) Vielen Dank dir wieder einmal. Werde mich mal mit xsl:key befassen muessen.
Gruß,
Holger