XML/XQuery/output — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 11:25, 26 мая 2010
Содержание
Adding an attribute to an element
<source lang="xml">
File: Data.xml <order>
<car model="A"> <id>0001</id> <name language="en">name 1</name> <colorChoices>navy black</colorChoices> </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 in doc("Data.xml")/order/car[@model = "ACC"] return <car id="P{$prod/id}">
{$prod/(@*, *)} </car> </source>
Adding attributes to results
<source lang="xml">
File: Data.xml <order>
<car model="A"> <id>0001</id> <name language="en">name 1</name> <colorChoices>navy black</colorChoices> </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 $car in doc("Data.xml")/order/car
where $car/@model="A"
order by $car/name
return
- {data($car/name)} }
Output: <?xml version="1.0" encoding="UTF-8"?>
- name 1
</source>
Constructing elements using XML-like syntax
<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 <html>
car order
- {
for $prod in doc("Data.xml")/order/car
return
- id: {data($prod/id)}, name: {data($prod/name)} }
</html> Output: <?xml version="1.0" encoding="UTF-8"?> <html>
car order
- id: 0001, name: name 1
- id: 0002, name: name 2
- id: 0003, name: name 3
</html>
</source>
Removing a child from an element
<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 in doc("Data.xml")/order/car[@model = "ACC"] return <car>
{$prod/(@*, * except id)} </car> </source>
Turning content into markup
<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 $model in distinct-values(doc("Data.xml")/order/car/@model) return element {$model}
{doc("Data.xml")/order/car[@model = $model]/name}
Output: <?xml version="1.0" encoding="UTF-8"?> <A>
<name language="en">name 1</name>
</A>
<name language="en">name 2</name> <name language="en">name 3</name>
</source>
Wrapping results in a new element
<source lang="xml">
File: Data.xml <order>
<car model="ACC"> <id>0001</id> <name language="en">name 1</name> </car> <car model="BCC"> <id>0002</id> <name language="en">name 2</name> </car> <car model="BCC"> <id>0003</id> <name language="en">name 3</name> </car>
</order> File: Query.xquery
- {
for $car in doc("Data.xml")/order/car
where $car/@model="ACC"
order by $car/name
return $car/name
}
Output: <?xml version="1.0" encoding="UTF-8"?>
-
<name language="en">name 1</name>
</source>