gleiche elemente nur 1x anzeigen
g-punkt
- xsl
!!! xsl soll nur die verschiedenen classes ausgeben !!!
als bsp:
xml
<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>
.....usf.
!!! xsl soll nur die verschiedenen classes ausgeben !!!
also zb sollte dann im html
<p>animal</p>
<p>plant</p>
stehen
sozusagen sollen alle <class> angezeigt werden die es gibt (aber nicht ALLE aufgezählt mit xsl for-each)
TIA, g.
nachtrag:
"gleiche elemente" ist nicht korrekt
ich möchte gleichen _inhalt_ eines elements nur 1x ausgeben
Hallo g-punkt!
Klingt diese Begrüßung auch irgendwie seltsam für Dich? Denk mal drüber nach ;)
!!! xsl soll nur die verschiedenen classes ausgeben !!!
als bsp:
xml
<lifeform>
<id>jkfan-3245</id>
<class>plant</class>
</more>
</lifeform>
Warum ist hier ein </more>? Wo ist das <more>? Sinnvollerweise sollte es so aussehen:
<lifeform>
<more>
<id>jkfan-3245</id>
<class>plant</class>
</more>
</lifeform>
Dann mach doch lieber sowas draus:
<lifeform id="jkfan-3245">plant</lifeform>
<lifeform id="34424j_knnanfn">animal</lifeform>
oder noch besser:
<lifeform id="jkfan-3245" class="plant" />
<lifeform id="34424j_knnanfn" class="animal" />
Wenn Du dann noch ein weiteres Attribut einfügst, z.B.
<lifeform id="jkfan-3245" class="plant" amount="4711"/>
<lifeform id="34424j_knnanfn" class="animal" amount="42"/>
Brauchst Du Dir auch wegen der Anzahl keine Sorgen machen.
Dies alles setzt allerdings voraus, daß Du diese Datei selber bearbeiten, erstellen und verformen kannst/darfst/mußt!
Grüße aus Spandau
Masin Al-Dujaili
danke dass du dich des ganzen annimmst aber du hast den kern des pudels verfehlt (im gegensatz zu franz)
das ganze is ja nur n bsp und more steht für zig weitere elemente (sollte eher <more/> sein zugegeben)
ad anzahl
es gibt da mindestens 40 classes die als liste nur 1x ausgegeben werden sollen - in den abertausenden datensätzen kommen diese 40 allerdings abertausende male vor ;) -> ergo will ich die unterschiedlichen classes aber nur 1x ausgeben (für ne optionbox) oder testweise einfach in <p></p> gehüllt
Hallo g-punkt!
Klingt diese Begrüßung auch irgendwie seltsam für Dich? Denk mal drüber nach ;)
!!! xsl soll nur die verschiedenen classes ausgeben !!!
als bsp:
xml
<lifeform>
<id>jkfan-3245</id>
<class>plant</class>
</more>
</lifeform>
Warum ist hier ein </more>? Wo ist das <more>? Sinnvollerweise sollte es so aussehen:
<lifeform>
<more>
<id>jkfan-3245</id>
<class>plant</class>
</more>
</lifeform>
Dann mach doch lieber sowas draus:
<lifeform id="jkfan-3245">plant</lifeform>
<lifeform id="34424j_knnanfn">animal</lifeform>
oder noch besser:
<lifeform id="jkfan-3245" class="plant" />
<lifeform id="34424j_knnanfn" class="animal" />
Wenn Du dann noch ein weiteres Attribut einfügst, z.B.
<lifeform id="jkfan-3245" class="plant" amount="4711"/>
<lifeform id="34424j_knnanfn" class="animal" amount="42"/>
Brauchst Du Dir auch wegen der Anzahl keine Sorgen machen.
Dies alles setzt allerdings voraus, daß Du diese Datei selber bearbeiten, erstellen und verformen kannst/darfst/mußt!
Grüße aus Spandau
Masin Al-Dujaili
Hallo g-punkt (Hast du zuviel "Helden wie wir" gelesen oder?),
Eine einfache Lösung für kleinere Dateien ist:
<?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>
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
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
Hallo g-punkt (Hast du zuviel "Helden wie wir" gelesen oder?),
Eine einfache Lösung für kleinere Dateien ist:
...
gibt Liste von Inhalten der class-Elemente aus, wobei Doppelte eliminiert werden
...
Gruß
Franz
vor allem muss ich dir gratulieren mich besser verstanden zu haben als ich mich artikulieren konnte :)))) genau das will ich >> doppelte eliminieren!