XML/XQuery/namespace

Материал из Web эксперт
Версия от 21:22, 25 мая 2010; (обсуждение)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Namespace declaration impact on input elements

   <source lang="xml">

File: Data.xml <prod:car xmlns:prod="http://wbex.ru/prod">

 <prod:id>0002</prod:id>
 <prod:name language="en">name 2</prod:name>

</prod:car> File: Query.xquery <report xmlns="http://wbex.ru/report">

 <firstChild/>
 {doc("Data.xml")/*}

</report>

Output: <?xml version="1.0" encoding="UTF-8"?> <report xmlns="http://wbex.ru/report">

  <firstChild/>
  <prod:car xmlns:prod="http://wbex.ru/prod">
     <prod:id>0002</prod:id>
     <prod:name language="en">name 2</prod:name>
  </prod:car>

</report>

</source>
   
  


Namespace declarations in query different from input document

   <source lang="xml">

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 cat = "http://wbex.ru/cat"; declare namespace prod2 = "http://wbex.ru/prod"; <rep:report> {

 doc("Data.xml")/cat:order/prod2: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>

</source>
   
  


Prefixed name tests

   <source lang="xml">

File: Data.xml

<prod:car xmlns:prod="http://wbex.ru/prod">

 <prod:id>0002</prod:id>
 <prod:name language="en">name 2</prod:name>

</prod:car> File: Query.xquery declare namespace prod = "http://wbex.ru/prod"; <prod:prodList>{

 doc("Data.xml")/prod:car/prod:id

}</prod:prodList>

Output: <?xml version="1.0" encoding="UTF-8"?> <prod:prodList xmlns:prod="http://wbex.ru/prod">

  <prod:id>0002</prod:id>

</prod:prodList>

</source>
   
  


Querying with namespaces

   <source lang="xml">

File: Data.xml <prod:car xmlns:prod="http://wbex.ru/prod">

 <prod:id>0002</prod:id>
 <prod:name language="en">name 2</prod:name>

</prod:car>

File: Query.xquery declare namespace prod = "http://wbex.ru/prod"; for $car in doc("Data.xml")/prod:car return $car/prod:name Output: <?xml version="1.0" encoding="UTF-8"?> <prod:name xmlns:prod="http://wbex.ru/prod" language="en">name 2</prod:name>

</source>
   
  


Using a namespace declaration in a constructor

   <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 <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml">

 <xhtml:h1 class="carHdr">car order</xhtml:h1>
 <xhtml:ul>{
   for $prod in doc("Data.xml")/order/car
   return <xhtml:li class="{$prod/@model}">id: {
                              data($prod/id)}</xhtml:li>
 }</xhtml:ul>

</xhtml:html> Output: <?xml version="1.0" encoding="UTF-8"?> <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml">

  <xhtml:h1 class="carHdr">car order</xhtml:h1>
  <xhtml:ul>
     <xhtml:li class="A">id: 0001</xhtml:li>
     <xhtml:li class="B">id: 0002</xhtml:li>
     <xhtml:li class="B">id: 0003</xhtml:li>
     <xhtml:li class="C">id: 0004</xhtml:li>
  </xhtml:ul>

</xhtml:html>

</source>
   
  


Using namespace declaration attributes

   <source lang="xml">

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 <rep:report xmlns="http://wbex.ru/cat"

           xmlns:prod="http://wbex.ru/prod"
           xmlns:rep="http://wbex.ru/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" xmlns:prod="http://wbex.ru/prod"

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

</rep:report>

</source>
   
  


Using XML namespace declarations

   <source lang="xml">

File: Data.xml <prod:car xmlns:prod="http://wbex.ru/prod">

 <prod:id>0002</prod:id>
 <prod:name language="en">name 2</prod:name>

</prod:car> File: Query.xquery <report xmlns="http://wbex.ru/report"

            xmlns:cat="http://wbex.ru/cat"
            xmlns:prod="http://wbex.ru/prod"> {
 for $car in doc("Data.xml")/prod:car
 return <linecar>
          {$car/prod:id}
          {$car/prod:name}
        </linecar>

} </report>

Output: <?xml version="1.0" encoding="UTF-8"?> <report xmlns:prod="http://wbex.ru/prod" xmlns:cat="http://wbex.ru/cat"

       xmlns="http://wbex.ru/report">
  <linecar>
     <prod:id>0002</prod:id>
     <prod:name language="en">name 2</prod:name>
  </linecar>

</report>

</source>