Permalänk
Medlem

Ett par frågor om XPath syntax

Jag har två frågor angående xpath

Min första fråga är säkert enkel men jag har inte kunnat lösa den.
Jag har en xml-fil med följande struktur (utdrag):

<root>
<grupper>
<grupp gruppid="g1">Namnet på gruppen</grupp>
<grupp gruppid="g2">Ett annat namn</grupp>
</grupper>
</root>

Jag har ett namn på en av grupperna (t.ex. "Namnet på gruppen"). Med hjälp av detta vill jag hitta den gruppens gruppid attribut.
Jag har prövat att skriva select="//grupper[grupp="Namnet på gruppen"]/grupp/@gruppid
Detta fungerar inte utan returnerar alltid namnet på den första gruppen. Jag skulle bli glad om någon kunde hjälpa mig att få en korrekt xpath sats.

Min andra fråga är hur man har flera tester i samma xpath sats.

Jag har en xml-fil med följande struktur (utdrag):

<root>
<datum>
<år></år>
<månad></månad>
<dag></dag>
</datum>
</root>

Det jag vill göra är att testa om år stämmer OCH om månad stämmer OCH om dag stämmer. Hur skriver man?
Ett test för att bara kolla året skulle ju se ut något i stil med datum[år="2001"]. Men jag vill ha ett test för månad och dag där också.

Permalänk
Medlem

Tar direkt ur huvvet och chansar lite.

Har du testat att skriva den första queryn så här istället?
//grupper[grupp="Namnet på gruppen"]/@gruppid

Den andra borde funka med 'and'. Typ:
//datum[år="2002" and månad="02" and dag="14"]

Visa signatur

---

Permalänk
Medlem

Tackar. Ditt svar på fråga två fungerade alldeles utmärkt. Däremot på fråga 1 stämmer det inte. Du skrev //grupper[grupp="Namnet på gruppen"]/@gruppid. Efter hakparentesen kan inte /@gruppid komma eftersom @gruppid är en del av grupp elementet grupp och inte grupper.

Tack ändå!