2012-09-24 16 views
16

Ich habe ein Textfeld, 'txtSearch'. Ich verwende es, um Personen nach Nachnamen zu suchen. Das ist mein Code.Zwei Bedingungen mit OR in XPATH

Dieser Code wählt alle Nachnamen im XML aus, wie die Texteingabe in der Textbox txtSearch.

Dies übersetzt alle Großbuchstaben in Kleinbuchstaben.

Also wenn ich nach 'Dorosan' suche, wenn ich 'doro' tippe, ruft es die richtige Person ab, weil es das 'D' nach 'd' übersetzt. Aber wenn ich 'Doro' eintippe, wird die richtige Person nicht gefunden.

Ich frage mich, ob ich zwei Bedingungen in einem XPATH haben kann, und wie? Ich möchte in der Lage sein, alle Großbuchstaben in Kleinbuchstaben zu übersetzen ODER alle Kleinbuchstaben in Großbuchstaben zu übersetzen.

Antwort

19

and und or sind innerhalb der Bedingung erlaubt: [here]. Oder Sie können auch mehrere Pfade in einem XPath-Ausdruck mit dem Pipe-Zeichen verwenden.

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

+1

für MS SQL Server .exist mit ("XPath") - es zeigt Fehler XQuery [dvEd.EnrichmentData.exist()]: Die XQuery-Syntax 'Union' ist nicht unterstützt. –

1

Ich glaube nicht, dass Sie ein "oder" hier brauchen. Sie müssen nur beide Operanden in Kleinbuchstaben umwandeln, anstatt nur eine davon zu übersetzen.

1

Wie von Michael Kay erwähnt, ist keine or erforderlich.

Verwenden Sie einfach:

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

+ "')]");