XML/XQuery/variable — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 11:25, 26 мая 2010
Содержание
Attempting to use a counter variable
<source lang="xml">
File: Data.xml
<order>
<car model="A"> <id>0001</id> <name language="en">name 1</name> </car> <car model="B"> <id>0002</id> <name language="en">name 2</name> </car> <car model="B"> <id>0003</id> <name language="en">name 3</name> </car> <car model="C"> <id>0004</id> <name language="en">name 4</name> </car>
</order> File: Query.xquery let $count := 0 for $prod in doc("Data.xml")//car[@model = ("B", "A")] let $count := $count + 1
return{$count}. {data($prod/name)}
Output: <?xml version="1.0" encoding="UTF-8"?>
1. name 1
1. name 2
1. name 3
</source>
Attempting to use a positional variable with a where clause
<source lang="xml">
File: Data.xml <order>
<car model="A"> <id>0001</id> <name language="en">name 1</name> </car> <car model="B"> <id>0002</id> <name language="en">name 2</name> </car> <car model="B"> <id>0003</id> <name language="en">name 3</name> </car>
</order> File: Query.xquery for $prod at $count in doc("Data.xml")//car where $prod/@model = ("B", "C") order by $prod/name
return{$count}. {data($prod/name)}
Output: <?xml version="1.0" encoding="UTF-8"?>
2. name 2
3. name 3
</source>
Binding multiple variables in a quantified expression
<source lang="xml">
File: Query.xquery some $i in (1 to 3), $j in (10, 11)
satisfies $j - $i = 7
Output: <?xml version="1.0" encoding="UTF-8"?>true
</source>
Compare value
<source lang="xml">
File: Data.xml <?xml version="1.0"?> <bib>
<book year="1988"> <title>title 1</title> </book> <book year="2004"> <title>title 2</title> </book>
</bib>
File: Query.xquery xquery version "1.0"; declare boundary-space strip; <myNewBib>{ doc("Data.xml")/bib/book[@year > 2005] }</myNewBib> Output: <?xml version="1.0" encoding="UTF-8"?> <myNewBib/>
</source>
Converting values with a lookup table
<source lang="xml">
File: Data.xml <order>
<car model="A"> <id>0001</id> <name language="en">name 1</name> </car> <car model="B"> <id>0002</id> <name language="en">name 2</name> </car> <car model="B"> <id>0003</id> <name language="en">name 3</name> </car> <car model="C"> <id>0004</id> <name language="en">name 4</name> </car>
</order> File: Query.xquery let $modelNames := <modelNames>
<model code="B" name="Accessories"/> <model code="C" name="Menswear"/> <model code="A" name="Womens"/> </modelNames>
let $cat := doc("Data.xml")/order for $model in distinct-values($cat/car/@model)
returnOutput: <?xml version="1.0" encoding="UTF-8"?>
</source>
Define variable in for statement
<source lang="xml">
File: Data.xml <?xml version="1.0"?> <bib>
<book year="1988"> <title>title 1</title> </book> <book year="2004"> <title>title 2</title> </book>
</bib>
File: Query.xquery <books>{
for $book in doc("Data.xml")/bib/book let $t := $book/title/text() order by $t return <book><title>{$t}</title></book>
}</books> Output: <?xml version="1.0" encoding="UTF-8"?> <books>
<book> <title>title 1</title> </book> <book> <title>title 2</title> </book>
</books>
</source>
Using a positional variable in a for clause
<source lang="xml">
File: Data.xml <order>
<car model="A"> <id>0001</id> <name language="en">name 1</name> </car> <car model="B"> <id>0002</id> <name language="en">name 2</name> </car> <car model="B"> <id>0003</id> <name language="en">name 3</name> </car> <car model="C"> <id>0004</id> <name language="en">name 4</name> </car>
</order> File: Query.xquery for $prod at $count in doc("Data.xml")//car[@model = ("B", "A")]
return{$count}. {data($prod/name)}
Output: <?xml version="1.0" encoding="UTF-8"?>
1. name 1
2. name 2
3. name 3
</source>