[XPath] Kijken of volgende elementen attribuut hebben

Pagina: 1
Acties:

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Hier zijn vast wel wat XPath fanaten.. Zou mooi uitkomen want ik weet het niet meer ;)

Ik heb deze XML structuur:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<xmlstream>
  <selecteren>
     <keuze value="iets 1" />
     <keuze value="iets 2" />
     <keuze value="iets 3" selected="selected" />
     <keuze value="iets 4 />
  </selecteren>
  <selecteren>
     <keuze value="wat 1" />
     <keuze value="wat 2" />
     <keuze value="wat 3" />
     <keuze value="wat 4 />
  </selecteren>
</xmlstream>

Ik heb dit stukje XSLT
XSLT:
1
2
3
4
5
6
7
8
9
10
11
<!-- zit in een node 'selecteren' //-->

<option>
   <xsl:attribute name="value"></xsl:attribute>

   <xsl:if test="not(keuze[@selected])">
       <xsl:attribute name="selected">selected</xsl:attribute>
   </xsl:if>
   
   Blanco
</option>

De bedoeling is dus dat als géén van de childNodes van het 'selecteren' element het attribuut "selected" heeft, de zelfgemaakt optie (met value="") het "selected" attribuut krijgt..

maar op een of andere manier is dat stukje niet goed
code:
1
not(keuze[@selected])


code:
1
Unknown method. -->not(keuze<--[@selected])

[ Voor 19% gewijzigd door r0bert op 15-10-2003 16:29 ]


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Hmm, misschien is ie beter naar W&G te verplaatsen.. echt veel reacties op, volgens mij toch relatief simpel probleem, komen er niet.. hij moest toch wel hier ? :?

[ Voor 98% gewijzigd door r0bert op 15-10-2003 22:40 ]


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Die expressie werkt bij mij gewoon. Er zit trouwens wel een fout in je xml:
code:
1
2
<keuze value="iets 4 />
                    ^ iets vergeten

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
@marcusk:
Bij mij werkt het niet.. Welke browser gebruik je ? IE 5.5 hier, misschien ligt het daaraan? En als het daaraan ligt, weet misschien iemand een oplossing of workaround voor de oudere browsers :?
Ps. die dubbelquote was ik simpelweg vergeten met typen ;)

[ Voor 78% gewijzigd door r0bert op 15-10-2003 23:42 ]


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Omdat het met COUNT() blijkbaar niet wil werken en niemand anders het hier denk ik weet, ben ik begonnen met iets wat ik op msdn.microsoft.com vond, msxsl:script element:
code:
1
2
3
4
5
6
<msxsl:script language="JScript" implements-prefix="def">
    function countChilds(parentNode)
    {
        return parentNode.childNodes.length
    }
</msxsl:script>

nu dat ik dus dmv
code:
1
def:countChilds(element)

de childs te kunnen tellen, maar dat werkt dus óók niet! Heeft iemand misschien een oplossing of een ander wel werkend alternatief (voor IE 5.5).. want ik zit nu echt stuck :S

[ Voor 15% gewijzigd door r0bert op 16-10-2003 12:10 ]


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
IE 6 gebruik ik. De xslt support van 5.5 is niet echt up-to-date.
Pagina: 1