Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[XPATH] attribuut zoeken case-insensitive

Pagina: 1
Acties:

  • NS_5
  • Registratie: Februari 2005
  • Laatst online: 18-12-2024
Hallo,

Ik heb een probleem met xpath. Ik wil zoeken naar een attribuut maar ik weet niet in welke case de waarde van het attribuut is geschreven. Het kan dus zijn 'filename' of 'Filename' of 'FileName' enz. Het probleem is dat ik nu in xpath een query wil doen doen die niet hoofdlettergevoelig naar attributen zoek.

In MySQL zal je doen "WHERE attribute LIKE $val" maar like bestaat niet in xpath en ik weet niet hoe ik een vergelijkbare query doe in xpath. Mijn huidige query is:
code:
1
//*[attribute:: * = \"$property\"]


Deze query doet wat ik wil maar is wél hoofdlettegevoelig. En dat is dus NIET de bedoeling.

Wie kan mij helpen

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Je hebt het over de naam, maar volgens mij bedoel je de waarde?
Kijk eens naar translate(XPath 1) of lower-case/matches(XPath 2).

Verder kun je attribute::* afkorten tot @*.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • NS_5
  • Registratie: Februari 2005
  • Laatst online: 18-12-2024
Je bedoeld dat ik het zo kan schrijven:
code:
1
//*[@*.= \"$property\"]

werkt niet :( . En volgens mij gebruik ik xpath 1.0 dus lower-case/matches zal niet werken.. had ik wel geprobeerd trouwens.. maar ik kan ook niet translate gebruiken want ik heb geen waarde om te translaten want die staat in het xml bestand.

Verwijderd

NS_5 schreef op woensdag 13 augustus 2008 @ 14:51:
Ik heb een probleem met xpath. Ik wil zoeken naar een attribuut maar ik weet niet in welke case de waarde van het attribuut is geschreven. Het kan dus zijn 'filename' of 'Filename' of 'FileName' enz. Het probleem is dat ik nu in xpath een query wil doen doen die niet hoofdlettergevoelig naar attributen zoek.
Hoe komen die attributes in je XML? XML is case sensitive by design, dus dit zou helemaal niet voor mogen komen...

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Bedoel je niet gewoon:
code:
1
//*[@$property]

Ik weet niet wat $property is? XSL-variabele of een andere?

  • pedorus
  • Registratie: Januari 2008
  • Niet online
NS_5 schreef op woensdag 13 augustus 2008 @ 16:39:
Je bedoeld dat ik het zo kan schrijven:
code:
1
//*[@*.= \"$property\"]

werkt niet :( .
Die punt hoorde bij het einde van de regel :)
maar ik kan ook niet translate gebruiken want ik heb geen waarde om te translaten want die staat in het xml bestand.
Ik heb het erover dat je translate kan gebruiken om lower-case te maken. Zonder bijzondere karakters is dit:
code:
1
translate(@*,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')=...

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
code:
1
//*[contains(local-name(@*), $property)]

Werkt in ieder geval? Maar die case insensitivity is me onduidelijk, volgens mij is het gewoon sensitive

[ Voor 4% gewijzigd door r0bert op 13-08-2008 23:17 ]

Pagina: 1