2012-12-14 4 views

Antwort

13

Der Operator = von XPath 1.0 funktioniert auf diese Weise, obwohl XPath 1.0 keine Syntax für das Schreiben von Sequenzen bietet. Also, wenn Sie ein XML-Dokument des Formulars haben

<doc> 
    <value>1</value> 
    <value>2</value> 
    <value>3</value> 
</doc> 

dann ein Ausdruck wie //doc[value = 2] zurückkehren wird, dass doc Element. In XPath 2.0 erstellt die Syntax (1, 2, 3) eine Sequenz von drei Ganzzahlen, und Sie können Bedingungen wie $i = (1, 2, 3) schreiben. Literale Sequenzen sind jedoch keine Funktion von XPath 1.0 - die einzige Möglichkeit, mehrere Werte auf einer Seite eines XPath-Ausdrucks zu erhalten, besteht darin, einen Pfadausdruck zu verwenden, der mehreren Knoten entspricht.

+0

+1 für eine präzise Antwort. –

4

Ich hatte das gleiche Problem, die obige Antwort ist richtig. Um es klar, in Xpath dies etwas aussehen wird:

//*:document[*:documentType=("magazine","newspaper")] 

Weichen wäre der equivalant von:

select * from documents where documenttype in ('newsletter','magazine') 
1

Um herauszufinden, ob die ‚id‘ Sie suchen ist in der Reihenfolge der (1, 2, 3, 4) index-of() könnte eine Wahl sein. Achten Sie darauf, dass es eine Indexliste zurückgibt.

Für ein Dokument Teil wie

<student id='1'/> 
<student id='101'/> 
<student id='1001'/> 

Select wird so etwas wie

//*[not(empty(index-of((1, 2, 3, 4), @id)))]