alle nodes nach Attribut durchchecken
Rondra
- xsl
Hallo,
trotz Suche hab ich einfach nichts gefunden was mir weiterhelfen könnte oder ich seh den Wald vor lauter Bäumen nich mehr...
Bitte helft mir..
meine XML könnte so aussehen:
<POINTS>
<POINT isTrue="1" name="eins"/>
<POINT isTrue="" name="zwei"/>
<POINT name="drei"/>
<POINT isTrue="2" name="vier"/>
</POINTS>
Mein Problem ist, dass ich ermitteln möchte, ob auch nur ein Attribut "isTrue" in dem nodeset POINTS jemals leer ist.
Mit andren Worten: Wenn das nodeset jemals ein leeres Attribut isTrue hat, dann wird template1,
wenn jedoch alle isTrue-Attribute befüllt sind, wird template2 eingesetzt.
Nur wie überprüfe ich das?
Ich hoffe das ist einigermassen verständlich..
Danke !!!!
Hmmm... Ungefähr so?
<xsl:variable name="schalter">
<xsl:for-each select="POINTS">
<xsl:if test="isTrue = '' or not(isTrue)">Nicht da</xsl:if>
</xsl:for-each>
</xsl:variable>
JAU ! DANKE !!!!! SO ist die variable nützlich!! ;))
Hi,
<POINTS>
<POINT isTrue="1" name="eins"/>
<POINT isTrue="" name="zwei"/>
<POINT name="drei"/>
<POINT isTrue="2" name="vier"/>
</POINTS>Mein Problem ist, dass ich ermitteln möchte, ob auch nur ein Attribut "isTrue" in dem nodeset POINTS jemals leer ist.
Du willst also wissen, ob die Zahl der POINT-Elemente, die ein leeres isTrue-Attribut oder gar kein isTrue-Attribut haben, ungleich 0 ist.
Das müßte dann m.E. so aussehen:
<xsl:if test="count(//POINT[@isTrue = '' or not(@isTrue))]) != 0">
<!-- was auch immer -->
</xsl:if>
Ggf. anstelle des xsl:if ein xsl:choose + xsl:when + xsl:otherwise verwenden.
cu,
Andreas