tutoriais mais recente desenvolvimento web
 

XQuery Seleção e Filtragem


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>