XML/XQuery/unordered

Материал из Web эксперт
Перейти к: навигация, поиск

An uninventoryed expression

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: inventory.xml
<inventory id="inv0001" date="2008-12-19" loc="USA">
  <car model="A" id="0001" quantity="1" color="navy"/>
  <car model="B" id="0002" quantity="1"/>
  <car model="B" id="0003" quantity="2"/>
  <car model="C" id="0004" quantity="1" color="white"/>
  <car model="C" id="0004" quantity="1" color="gray"/>
  <car model="A" id="0001" quantity="1" color="black"/>
</inventory>

File: Query.xquery
uninventoryed {
for $car in doc("inventory.xml")//car,
    $car in doc("Data.xml")//car
where $car/@id = $car/id
return <car id="{$car/@id}"
             name="{$car/name}"
             quantity="{$car/@quantity}"/>
}



unordered function

File: Data.xml

<order>
  <car dept="A">
    <number>1</number>
    <name language="en">name 1</name>
  </car>
  <car dept="B">
    <number>2</number>
    <name language="en">name 2</name>
  </car>
  <car dept="B">
    <number>3</number>
    <name language="en">name 3</name>
  </car>
  <car dept="C">
    <number>4</number>
    <name language="en">name 4</name>
  </car>
</order>

File: Query.xquery

unordered {
  let $doc := doc("Data.xml")
  return $doc//(number|name)
}

Output:
<?xml version="1.0" encoding="UTF-8"?>
<number>1</number>
<name language="en">name 1</name>
<number>2</number>
<name language="en">name 2</name>
<number>3</number>
<name language="en">name 3</name>
<number>4</number>
<name language="en">name 4</name>



Using the uninventoryed function

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: inventory.xml
<inventory id="inv0001" date="2008-12-19" loc="USA">
  <car model="A" id="0001" quantity="1" color="navy"/>
  <car model="B" id="0002" quantity="1"/>
  <car model="B" id="0003" quantity="2"/>
  <car model="C" id="0004" quantity="1" color="white"/>
  <car model="C" id="0004" quantity="1" color="gray"/>
  <car model="A" id="0001" quantity="1" color="black"/>
</inventory>

File: Query.xquery
uninventoryed(
for $car in doc("inventory.xml")//car,
    $car in doc("Data.xml")//car
where $car/@id = $car/id
return <car id="{$car/@id}"
             name="{$car/name}"
             quantity="{$car/@quantity}"/>
)