web-dev-qa-db-fra.com

Deux conditions utilisant OR dans XPATH

J'ai une zone de texte, 'txtSearch'. Je l'utilise pour rechercher des personnes par nom de famille. c'est mon code.

var xmlTempResultSearch = xmlResidentListDisplay.selectNodes(
    "//PeopleList/Row[contains(translate(@LastName, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), '" +
    txtSearch.value + "')]");

Ce code sélectionne tous les noms de famille dans le XML comme l'entrée de texte dans la zone de texte txtSearch.

Cela traduit toutes les lettres majuscules en lettres minuscules.

Donc, si je recherche "Dorosan", si je tape "doro", il récupère la bonne personne car il a traduit le "D" en "d". Mais quand je tape "Doro", il ne récupère pas la bonne personne.

Je me demande si je peux avoir deux conditions dans un XPATH, et comment? Je veux pouvoir traduire tous les majuscules en minuscules, OR traduire toutes les minuscules en majuscules.

26
edsamiracle

vous pouvez utiliser or/and dans [....]

Exemple:

//*[contains('abc') or contains('def') or text()='abcdef']

Plus d'informations sur les opérateurs: http://www.w3schools.com/xpath/xpath_operators.asp

32
CosminO

and et or sont autorisés dans la condition: [here]. Ou vous pouvez également utiliser plusieurs chemins dans une expression XPath à l'aide du signe de canal.

//PeopleList/Row[c1] | //PeopleList/Row[c2]

32
Jiri Kremser

Je ne pense pas que vous ayez besoin d'un "ou" ici. Il vous suffit de traduire les deux opérandes en minuscules, plutôt que de n'en traduire qu'un seul.

1
Michael Kay

Comme l'a noté Michael Kay, aucun or n'est nécessaire.

tilisez simplement:

PeopleList/Row
  [contains(translate(@LastName, 
                     'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
                     'abcdefghijklmnopqrstuvwxyz'), '" 
+
           translate(txtSearch.value,
                     'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
                     'abcdefghijklmnopqrstuvwxyz')'" 

+ "')]");
1
Dimitre Novatchev