2012-12-14 5 views

Odpowiedz

13

Operator = XPath 1.0 działa w ten sposób, chociaż XPath 1.0 nie zapewnia składni do pisania sekwencji. Więc jeśli masz dokumentu XML w postaci

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

następnie wyrazem jak //doc[value = 2] powróci że doc element.

W XPath 2.0, składnia (1, 2, 3) utworzy sekwencję trzech liczb całkowitych i będzie można zapisać warunki, takie jak $i = (1, 2, 3). Ale sekwencje dosłowne nie są cechą XPath 1.0 - jedynym sposobem uzyskania wielu wartości po jednej stronie wyrażenia XPath jest użycie wyrażenia ścieżki pasującego do wielu węzłów.

+0

+1 dla precyzyjnej odpowiedzi. –

4

Miałem ten sam problem, powyższa odpowiedź jest właściwa. Żeby było jasne, w XPath będzie to wyglądać mniej więcej tak:

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

wich byłaby equivalant od:

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

aby dowiedzieć się, czy „id” szukać w kolejności (1, 2, 3, 4) index-of() może być wyborem. Zwróć uwagę, że zwraca listę indeksów.

dla części dokumentu jak

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

Wybierz będzie coś

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