Enkelkind Elemente überprüfen
Rondra
- xsl
Hallo liebes Forum!
Ich hab folgende XML. Das ganze soll in HTML eine Auflistung darstellen. So eine Art Baumstruktur.
<elems>
<elem selected="false">
<elem selected="false">
<elem selected="true"/>
</elem>
</elem>
</elems>
bekomme es einfach nicht hin, dass das erste Element merkt, dass eins seiner Kinder/Enkelkinder das spezielle Attribut selected=true hat.
Mein ziel ist es, das erste element in einer anderen Farbe darzustellen, wenn eins seiner Kinder/Enkel/Urenkel das Attribut selected=true hat. Mit folgendem Code erkennt nur der Vater des betreffenden Kindes das Attribut, nicht jedoch der Großvater oder der Urgroßvater!
<xsl:when test="*/@selected='true'">yes</xsl:when>
Geht das nicht?
Dazu muss ich noch sagen, dass die Struktur der XML dynamisch generiert wird. Es können also zigbeliebige Verschachtelungen sprich Ur-ur-Enkel vorkommen... das macht die sache ja so kompliziert.. *seufz*
Danke Danke Danke im Voraus!!!
Rondra
Hi Rondra,
Mein ziel ist es, das erste element in einer anderen Farbe darzustellen, wenn eins seiner Kinder/Enkel/Urenkel das Attribut selected=true hat. Mit folgendem Code erkennt nur der Vater des betreffenden Kindes das Attribut, nicht jedoch der Großvater oder der Urgroßvater!
<xsl:when test="*/@selected='true'">yes</xsl:when>
Geht das nicht?
Klar:
<xsl:for-each select="MeinElement[.//@MeinAttribut='true']>
...mach was mit dem Punkt
</xsl:for-each>
Dazu muss ich noch sagen, dass die Struktur der XML dynamisch generiert wird. Es können also zigbeliebige Verschachtelungen sprich Ur-ur-Enkel vorkommen... das macht die sache ja so kompliziert.. *seufz*
Ohne den Doppel-Schrägen wärs wirklich kompliziert
Utzi
Hallo Andreas und Utzi,
JAU das klappt so, danke vielmals!!!!
*freu*
lg
Rondra
Hi,
Mein ziel ist es, das erste element in einer anderen Farbe darzustellen, wenn eins seiner Kinder/Enkel/Urenkel das Attribut selected=true hat. Mit folgendem Code erkennt nur der Vater des betreffenden Kindes das Attribut, nicht jedoch der Großvater oder der Urgroßvater!
<xsl:when test="*/@selected='true'">yes</xsl:when>
Du suchst Kinder/Enkel/Urenkel/..., also Nachfahren, englisch: descendants
Also
descendant::
Wenn es egal ist, welchen Elementnamen diese Nachfahren haben:
*
zusammen:
descendant::*
Diese Nachfahren sollen eine Bedingung erfüllen, also [Bedingung]:
descendant::*[Bedingung]
Die Bedingung ist, daß das selected-Attribut 'true' sein soll, also @selected='true'
Insgesamt also:
test="descendant::*[@selected='true']"
Nachzulesen in http://www.w3.org/TR/xpath
cu,
Andreas