XML/XQuery/prolog

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

A query with prolog and body

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
declare boundary-space preserve;
declare namespace prod = "http://wbex.ru/prod";
declare variable $order := doc("Data.xml")//order;
<firstResult>{count($order/car)}</firstResult>,
<prod:secondResult>{$order/car/id}</prod:secondResult>

Output:
<?xml version="1.0" encoding="UTF-8"?>
<firstResult>3</firstResult>
<prod:secondResult xmlns:prod="http://wbex.ru/prod">
   <id>0001</id>
   <id>0002</id>
   <id>0003</id>
</prod:secondResult>



Prolog default namespace declaration

File: Data.xml
<order xmlns="http://wbex.ru/cat">
  <id>1446</id>
  <prod:car xmlns:prod="http://wbex.ru/prod">
    <prod:id>0002</prod:id>
    <prod:name language="en">name 2</prod:name>
  </prod:car>
</order>
File: Query.xquery
declare default element namespace "http://wbex.ru/cat";
declare namespace rep = "http://wbex.ru/report";
declare namespace prod = "http://wbex.ru/prod";
<rep:report> {
  doc("Data.xml")/order/prod:car
} </rep:report>

Output:
<?xml version="1.0" encoding="UTF-8"?>
<rep:report xmlns:rep="http://wbex.ru/report">
   <prod:car xmlns:prod="http://wbex.ru/prod" xmlns="http://wbex.ru/cat">
      <prod:id>0002</prod:id>
      <prod:name language="en">name 2</prod:name>
  </prod:car>
</rep:report>



Prolog namespace declarations

File: Data.xml
<order xmlns="http://wbex.ru/cat">
  <id>1446</id>
  <prod:car xmlns:prod="http://wbex.ru/prod">
    <prod:id>0002</prod:id>
    <prod:name language="en">name 2</prod:name>
  </prod:car>
</order>


File: Query.xquery
declare namespace rep = "http://wbex.ru/report";
declare namespace prod = "http://wbex.ru/prod";
<rep:report> {
  doc("Data.xml")//prod:car
} </rep:report>

Output:
<?xml version="1.0" encoding="UTF-8"?>
<rep:report xmlns:rep="http://wbex.ru/report">
   <prod:car xmlns:prod="http://wbex.ru/prod" xmlns="http://wbex.ru/cat">
      <prod:id>0002</prod:id>
      <prod:name language="en">name 2</prod:name>
  </prod:car>
</rep:report>