O Exemplo documento XML
Nós vamos usar o "books.xml" documento nos exemplos abaixo (same XML file as in the previous chapters) .
Ver o "books.xml" arquivo no seu browser .
Selecionando e filtragem Elements
Como vimos nos capítulos anteriores, estamos selecionando e filtragem de elementos, quer com uma expressão de caminho ou com uma expressão FLWOR.
Olhe para a seguinte expressão FLWOR:
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
- para - (optional) liga-se uma variável a cada item retornado pelo na expressão
- deixe - (optional)
- onde - (optional) especifica um critério
- por - (optional) especifica o tipo de ordem do resultado
- retorno - especifica o que retornar no resultado
A cláusula FOR
A cláusula para se liga uma variável para cada item devolvido pela expressão em. O para resultados cláusula em iteração. Não pode haver múltiplo para cláusulas na mesma expressão FLWOR.
Para repetir um número específico de vezes em uma cláusula for, você pode usar o to palavra-chave:
for $x in (1 to 5)
return <test>{$x}</test>
Resultado:
<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>
O at palavra-chave pode ser usada para contar a iteração:
for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>
Resultado:
<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>
Também é permitida com mais do que um em expressão na cláusula for. Use vírgula para separar cada na expressão:
for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>
Resultado:
<test>x=10 and y=100</test>
<test>x=10 and y=200</test>
<test>x=20 and y=100</test>
<test>x=20 and y=200</test>
A cláusula let
A cláusula let permite atribuições de variáveis e evita repetir a mesma expressão muitas vezes. A cláusula let não resulta em iteração.
let $x := (1 to 5)
return <test>{$x}</test>
Resultado:
<test>1 2 3 4 5</test>
A cláusula WHERE
A cláusula onde é usado para especificar um ou mais critérios para o resultado:
where $x/price>30 and $x/price<100
A ordem pela cláusula
A ordem pela cláusula é utilizada para especificar a ordem de classificação do resultado. Aqui queremos ordenar o resultado por categoria e cargo:
for $x in doc("books.xml")/bookstore/book
order by $x/@category, $x/title
return $x/title
Resultado:
<title lang="en">Harry Potter</title>
<title lang="en">Everyday Italian</title>
<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>
A cláusula de retorno
A cláusula de retorno especifica o que deve ser retornado.
for $x in doc("books.xml")/bookstore/book
return $x/title
Resultado:
<title lang="en">Everyday Italian</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>