topical media & game development

talk show tell print

basic-xpath-xpathcode.xml / xml



  <?xml version="1.0" encoding="iso-8859-1"?>
  <xpath-examples>
    <chapter number="5">
      <group section="Expressions">
          <example>1 to 3, 5, 7, 11, 13</example>
          <example>for i in 1 to 10 return i*i</example>
          <example>some i in //item satisfies exists(i/*)</example>
          <example>if (exists(@price)) then @price else 0</example>
      <example>@price &gt; 3 or @cost &lt; 2</example>    
      </group>
      <group section="Expressions">
          <example>x + (y * 2)</example>
          <example>//book | //magazine</example>
          <example>substring-before(author, ' ')</example>
          <example>chapter and verse</example>
          <example>93.7</example>
          <example>sum(for i in //product return i/price * i/qty)</example>
          <example>avg( (//product)[position()&lt;=5]/price)</example>
      </group>                  
      <group section="Comments">
          <example>if (string(@x))
                          then (: attribute x exists and is non-empty :) @x
                          else "none"
          </example>
          <example>
                      3 (: + 
                         if (number(@x))
                         then (: attribute x exists and is non-zero :) @x
                         else 0 
                      :)
          </example>
       </group>
     </chapter>
     <chapter number="6">
       <group section="Integer Arithmetic">
          <example result="2">20 mod 3</example>
          <example result="2">20 mod -3</example>
          <example result="-2">-20 mod 3</example>
          <example result="-2">-20 mod -3</example>
          <example result="6">20 idiv 3</example>
          <example result="-6">20 idiv -3</example>
          <example result="-6">-20 idiv 3</example>
          <example result="6">-20 idiv -3</example>
       </group>
       <group section="Examples of Numeric Arithmetic">
         <example> X + 1 </example>
         <example> last()-1 </example>
         <example> @margin*2 </example>
         <example> ceiling(count(item) div 3) </example>
         <example> seq[position() &lt;= last() idiv 2] </example>
         <example> item[position() mod 2 = 0] </example>
         <example> count(list) mod 5 + 1 </example>
         <example> - @credit </example>
         <example> 1---1 </example> 
       </group>
       <group section="Duration divided by Duration">
         <example result="40">xdt:dayTimeDuration("P10D") div xdt:dayTimeDuration("PT6H") </example>
         <example result="-86400">xdt:dayTimeDuration("-P1D") div xdt:dayTimeDuration("PT1S") </example>
         <example result="0.083333333333333333">xdt:yearMonthDuration("P1M") div xdt:yearMonthDuration("P1Y") </example>
         <example note="get day of week">("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
                                                       [1 + ((date - xs:date("1901-01-06")) div xdt:dayTimeDuration("P1D") mod 7)]</example>
       </group>
       <group section="Value Comparisons">
         <example>x eq 2</example>
         <example>count(x) gt 2</example>
         <example>@x eq "yes"</example>
         <example>@retirement-date ge current-date()</example>
       </group>
       <group section="General Comparisons">
         <example>@width = 3</example>
         <example>@width = @height</example>
         <example>@width != x</example>
         <example>count(*) &gt; 10</example>
         <example>sum(SALES) &lt; 10000</example>
         <example>position() &lt; last() div 2 </example>
         <example>not(//@temp &lt;= 0.0)</example>
       </group> 
       <group section="Boolean Expressions">
         <example>x &gt; 3 and x &lt; 8</example>
         <example>@name and @address</example>
         <example>string(@name) and string(@address)</example>
         <example>true()</example>
         <example>x = 5 or x = 10</example>
         <example>@name or @id</example>
         <example>not(@id) or @id=""</example>
         <example>//para[position()=1 or position()=last()]</example>
       </group> 
     </chapter>
     <chapter number="7">
       <group section="Examples of Path Expressions">
         <example>para</example>
         <example>@title</example>
         <example>book/author/first-name</example>
         <example>para[@id]</example>
         <example>para/@id</example>
         <example>/*/para</example>
         <example>paragraphs</example>        
         <example>sections/body</example>
         <example>sections[3]/body</example>
         <example>sections/.</example>
         <example>/contract/clause[3]/subclause[2]</example>
         <example>//figure</example>
         <example>city[not(@name=preceding-sibling::city/ @name)]</example>
       </group>  
       <group section="Examples of Absolute Paths">
         <example test="no">/</example>
         <example>/price-list</example>
         <example test="no">/*</example>
         <example>/child::node()</example>
         <example>/*/xsl:*</example>
         <example>//figure</example>                  
       </group>
        <group section="Examples of Relative Paths">
         <example>ancestor::CHAPTER</example>
         <example>TITLE</example>
         <example>descendant::PARA/@style</example>
         <example>section[1]/clause[3]</example>
         <example>chapter/section/para/sentence</example>
         <example test="no">doc('a.xml')/id('Z123')</example> 
         <example>book/(chapter|appendix)</example>                 
       </group>   
       <group section="Examples of Steps">
         <example>child::title</example>
         <example>title</example>
         <example>attribute::title</example>
         <example>@title</example>
         <example>ancestor::xyz:*</example>
         <example>*[@width]</example>
         <example>text()[starts-with(.,'The')]</example>            
         <example>*[applet.class][position() &lt; 10]</example>
         <example>*[position() &lt; 10][applet.class]</example>
         <example>self::*[not(applet.class = preceding-sibling::*/applet.class)]</example>
         <example>namespace::*</example>
         <example>self::item</example>
         <example>comment()</example>
         <example>@comment()</example> 
       </group> 
       <group section="Examples of Node Tests">             
         <example>TITLE</example>
         <example>news:article</example>
         <example>MathML:*</example>
         <example>*</example>
         <example>text()</example>
         <example>processing-instruction()</example>
         <example>processing-instruction('ckpt')</example>                                                    
         <example>node()</example>
       </group>
       <group section="Example of Name Tests">
         <example>*</example>
         <example>xt:*</example>
         <example>title</example>
         <example>wrox:title</example>
         <example>*:title</example>
       </group>
       <group section="Example of Kind Tests">
         <example>parent::node()</example>                                          
         <example>// comment()</example>
         <example>child::text()</example>
         <example>@comment()</example>
       </group>
       <group section="Abbreviations">
         <example>@category</example>
         <example>title</example>
         <example>exists(..)</example>
         <example>../@name</example>                      
         <example>//figure</example>
         <example>//book[@category= 'fiction']</example>
         <example>//*/*</example>
         <example>//book/title</example>
         <example>chapter//footnote</example>
         <example>.//footnote</example>
         <example test="no">doc('lookup.xml')//entry</example>                      
         <example>winners//*/@name</example>
         <example>.//..</example>
         <example>chapter//footnote</example>
       </group>
       <group section="Predicates">
         <example>para[position()&gt;1]</example>
         <example>para[position()&gt;1]</example>
         <example>chapter/para[1]</example>
         <example>(chapter/para)[1]</example>   
         <example>section[@title='Introduction']</example>
         <example>section[title]</example>
         <example>title[substring-before(.,':')]</example>
         <example>book[not(author=preceding-sibling::author)]</example>   
         <example>para[1]</example>
         <example>para[last()]</example>
         <example>para[position()!=1]</example>
         <example>para[position()=1 to 5]</example>   
         <example>para[last()-1]</example>
         <example>para[3.2]</example>
         <example>para[position()]</example>
         <example>para[position()-1]</example>   
         <example>para[number(@nr)]</example>
         <example>book[author="P. D. James"][1]</example>
         <example>book[1][author="P. D. James"]</example>
         <example>book[position()=1 and author="P. D. James"]</example> 
       </group>
       <group section="Combining Sets of Nodes">  
         <example>*/figure | */table</example>
         <example>book[not(@publisher)] | book[@publisher='Wrox']</example>
         <example>(.|..)/title</example>
         <example>sum( (book|magazine)/@sales)</example>   
         <example>(//* | //@*) [.='nimbus2000']</example>
         <example>following::para intersect chap//*</example>
         <example test="no">key('a', 'Gilbert') intersect key('a', 'Sullivan')</example>
         <example>exists(. intersect arg)</example>   
         <example>@* except @note</example>
       </group>
     </chapter>
     <chapter number="8">
       <group section="The Comma Operator">
         <example>max((net, gross))</example>
         <example>for i in (1 to 4, 8, 13) return seq[i]</example>
         <example>string-join((@a, @b, @c), "-")</example>   
         <example>(applet.class, "N/A")[1]</example>
         <example>book/(author, title, isbn)</example>
       </group>
       <group section="Numeric ranges: The to operator">
         <example>for n in 1 to 10 return seq[n]</example>
         <example>seq[position() = 1 to 10]</example>   
         <example>string-join( for i in 1 to N return " ", "")</example>
         <example>for i in 1 to count(S) return (S[i], T[i])</example>
       </group>
       <group section="Filter Expressions">
         <example>paragraphs[23]</example>
         <example test="no">key('empname', 'John Smith')[@loc='Sydney']</example>    
         <example>(//section|//subsection) [title='Introduction']</example>
         <example>(//@href/doc(.)) [pricelist][1]</example> 
       </group>
       <group section="The for Expression">  
         <example>for i in 1 to 5 return i*i</example>
         <example>for i in 0 to 4 return 1 to i</example>
         <example>count(for i in 1 to 8, j in 1 to 8 return f:square(i, j))</example>
       </group>
       <group section="The some and every Expressions">  
         <example>some i in //item satisfies i/price gt 200 </example>    
         <example>some n in 1 to count(S)-1 satisfies S[n] eq S[n+1]</example>
         <example>every p in //person satisfies p/@dob castable as xs:date</example>   
         <example>some k in //keyword, p in //para satisfies contains(p, k)</example>
         <example>every d in //termdef/@id satisfies some r in //termref satisfies d eq r/@def</example>
       </group>
     </chapter>
     <chapter number="9">  
       <group section="The instance of Operator">
         <example>seq[. instance of node()]</example>
         <example>if (some s in seq satisfies s instance of node()) then 0 else 1</example>
         <example>if (not(seq instance of xdt:anyAtomicType*)) then 0 else 1</example>
         <example>p instance of item()+</example> 
       </group>
       <group section="The treat as Operator">
         <example test="no">
              if (data(@quantity) instance of xs:string) 
              then
                 if ((@quantity treat as xs:string) = "n/a")
                    then -2
                 else if ((@quantity treat as xs:string) = "unknown")
                    then -1
                 else error()
              else (@quantity treat as xs:integer) + 2
          </example>
       </group>  
     </chapter>  
     <chapter number="10">
       <group section="abs">
          <example result="2">abs(2)</example>
          <example result="2">abs(-2)</example>    
          <example result=".7">abs(-3.7)</example>
          <example result="1.0e-7">abs(-1.0e-7)</example>    
          <example result="NaN">abs(number('NaN'))</example>
        </group>
        <group section="adjust-date/time-to-timezone">
          <example result="09:00:00-05:00">adjust-time-to-timezone(xs:time("15:00:00+01:00"),  EST)</example>                        
          <example result="15:00:00-05:00">adjust-time-to-timezone(xs:time("15:00:00"),  EST)</example>  
          <example result="06:00:00-08:00">adjust-time-to-timezone(xs:time("15:00:00+01:00"))</example>                        
          <example result="15:00:00">adjust-time-to-timezone(xs:time("15:00:00+01:00"), ())</example>  
          <example result="15:00:00">adjust-time-to-timezone(xs:time("15:00:00"), ())</example>         
          <example result="2004-03-01T09:00:00-05:00">adjust-dateTime-to-timezone(xs:dateTime("2004-03-01T15:00:00+01:00"),  EST)</example>                        
          <example result="2004-03-01T15:00:00-05:00">adjust-dateTime-to-timezone(xs:dateTime("2004-03-01T15:00:00"), EST)</example>  
          <example result="2004-03-01T06:00:00-08:00">adjust-dateTime-to-timezone(xs:dateTime("2004-03-01T15:00:00+01:00"))</example>                        
          <example result="2004-03-01T15:00:00">adjust-dateTime-to-timezone(xs:dateTime("2004-03-01T15:00:00+01:00"), ())</example>  
          <example result="2004-03-01T15:00:00">adjust-dateTime-to-timezone(xs:dateTime("2004-03-01T15:00:00"),  ())</example>         
          <example result="2004-02-29-05:00">adjust-date-to-timezone(xs:date("2004-03-01+01:00"), EST)</example>                        
          <example result="2004-03-01-05:00">adjust-date-to-timezone(xs:date("2004-03-01"), EST)</example>  
          <example result="2004-02-29-08:00">adjust-date-to-timezone(xs:date("2004-03-01+01:00"))</example>                        
          <example result="2004-03-01">adjust-date-to-timezone(xs:date("2004-03-01+01:00"), ())</example>  
          <example result="2004-03-01">adjust-date-to-timezone(xs:date("2004-03-01"), ())</example>          
        </group>
        <group section="avg">                      
         <example result="xs:decimal('2.2')">avg((1.0, 2.6, 3.0)) </example>
         <example result="()">avg(())</example>
         <example result="xs:float('3.0')">avg((1, xs:float('3.5'), 5.5))</example>
         <example result="xs:decimal('2.0')">avg((1, 2, 3))</example>
         <example result="PT18H" test="no">avg((xdt:dayTimeDuration("P1D"), xdt:dayTimeDuration("PT12H")))</example>
       </group>
       <group section="boolean">
         <source-document>
              <doc>
                <emp name="John" age="53"/>
                <emp name="Mary"/>
              </doc>       
         </source-document>
         <example result="false">boolean(//emp[@age=21])</example>
         <example result="true">boolean(//emp[@age=53])</example>
         <example result="true">boolean(number(John/@age))</example>
         <example result="false">boolean(number(Mary/@age))</example>
         <example result="false">boolean(count(John/*))</example>
         <example result="false">boolean(string(John/@surname))</example>      
         <example result="true">boolean(string(John/@name))</example>
         <example result="true">boolean("true")</example>
         <example result="true">boolean("false")</example>
       </group>
       <group section="ceiling">
         <example result="1.0">ceiling(1.0)</example>
         <example result="2.0">ceiling(1.6)</example>
         <example result="6.0">ceiling(17 div 3)</example>
         <example result="-3.0">ceiling(-3.0)</example>
         <example result="-8.0e0">ceiling(-8.2e0)</example>
         <example result="NaN">ceiling(number('xxx'))</example>
         <example result="-0.0e0">ceiling(-0.5e0)</example>
       </group>
       <group section="codepoints-to-string">
         <example result="ASCII">codepoints-to-string((65, 83, 67, 73, 73))</example>      
         <example result="0123456789">codepoints-to-string(48 to 57)</example>
         <example result="">codepoints-to-string(())</example>
         <example>codepoints-to-string(64+n)</example>
       </group>
       <group section="compare">  
         <example result="-1">compare("espace", "espacer")        </example>
         <example result="-1">compare("espace", "espacé", strong)</example>
         <example result="0">compare("espace", "espacé", weak)</example>
         <example result="+1">compare("espacer", "espacé", strong)</example>
         <example result="+1">compare("espacer", "espacé", weak)</example>
       </group>
       <group section="concat">
         <example result="abc">concat("a", "b", "c")</example>
         <example error="true">concat("chap", 3)</example>
         <example result="ab">concat("a", (), (), "b")</example>      
         <example error="true">concat("a", ("b", "c"))</example>
       </group>
       <group section="contains">
         <example result="true">contains("Shakespeare", "spear")</example>
         <example result="false">contains("", "a")</example>
         <example result="true">contains("Shakespeare", "")</example>
         <example result="true">contains("", "")</example>
         <example result="false">contains((), "a")</example>
       </group>
       <group section="count">
         <source-document>
              <doc>
                <obs at="10:42:06" colors="red green"/>
                <obs at="11:43:12" colors="green blue orange"/>
              </doc>       
         </source-document>
         <example result="2">count(//obs)</example>
         <example result="2">count(//obs/@colors)</example>
         <example result="5">count(data(//obs/@colors))</example>
         <example result="4">count(//@*)</example>
         <example result="0">count(//obs/@date)</example>      
         <example result="6">count((5 to 10))</example>
       </group>
       <group section="data">
         <source-document>
           <rows>
             <row number="1" colors="red green"/>
             <row number="2" colors="yellow purple"/>
           </rows>    
         </source-document>
         <example result="1, 2">data(x/row/@number)</example>
         <example result="red, green, yellow, purple">data(x/row/@colors)</example>
         <example error="true">data(x)</example>
         <example result="()">data(x/row)</example>
       </group>
       <group section="day-from-date/Time">
         <example result="28">day-from-date(xs:date("2004-02-28"))</example>
         <example result="28">day-from-dateTime(xs:dateTime("2004-02-28T13:00:00"))</example>
         <example result="31">day-from-date(xs:date("2004-07-31+01:00"))</example>
         <example result="31">day-from-dateTime(xs:dateTime("2004-07-31T23:00:00-05:00"))</example>
       </group>
       <group section="days-from-dayTimeDuration">
         <example result="5">days-from-dayTimeDuration(xdt:dayTimeDuration("P5DT12H"))</example>
         <example result="3">days-from-dayTimeDuration(xdt:dayTimeDuration("PT72H"))</example>      
         <example result="-1">days-from-dayTimeDuration(xdt:dayTimeDuration("-P1D"))</example>
       </group>
       <group section="deep-equal">
         <source-document>
           <doc>
             <e att1="a" att2="b" att3="c"><f/><g/></e>
             <e att3="C" att1="a" att2="b"><f/></e>
             <e att3="C" att1="a" att2="b"><f/><g/></e>
           </doc>
         </source-document>
         <example result="true">deep-equal((1,2,3), (1,2,3))</example>
         <example result="false">deep-equal((1,2,3), (3,2,1))</example>
         <example result="true">deep-equal((1,2), (1.0, 2.0)) </example>
         <example result="true">deep-equal((), ())</example>
         <example result="false">deep-equal(doc/e[1], doc/e[2])</example>
         <example result="true">deep-equal(doc/e[1], doc/e[3], weak)</example>
         <example result="undefined">deep-equal(doc/e[1]/@*, doc/e[2]/@*, weak) </example>
       </group>
       <group section="distinct-values">
         <example result="3.5, 2.0, 1, 3">distinct-values((1, 2, 3, 3.5, 2.0, 1.0))</example>
         <example result="B, c, a">distinct-values(("A", "B", "C", "a", "b", "c"))</example>
         <example result="xs:time('13:20:02+01:00')">distinct-values((xs:time("12:20:02Z"), xs:time("13:20:02+01:00")))</example>      
         <example result="a, 1, 2004-05-08Z">distinct-values((1, "a", current-date()))</example>
       </group>  
       <group section="empty">
         <source-document>
              <para>See also <a ref="elsewhere.xml" style=""/>.</para>       
         </source-document>
         <example result="false">empty(/para)</example>
         <example result="false">empty(/para/a)</example>
         <example result="false">empty(/para/a/@style)</example>
         <example result="true">empty(/para/b)</example>
         <example result="true">empty(/para/a[2])</example>
       </group>
       <group section="ends-with">
         <example result="true">ends-with("a.xml", ".xml")</example>
         <example result="false">ends-with("a.xml", ".xsl")</example>
         <example result="true">ends-with("a.xml", "")</example>
         <example result="true">ends-with("", "")</example>     
         <example result="true">ends-with((), ())</example>
       </group>
       <group section="error">
         <example error="true">error()</example>
         <example error="true">error(xs:QName("docbook:invalid-page-ref"))</example>
       </group>
       <group section="escape-uri">
         <example result="simple.xml">escape-uri("simple.xml", true())</example>
         <example result="simple.xml">escape-uri("simple.xml", false())</example>
         <example result="my%20doc.xml">escape-uri("my doc.xml", true())</example>
         <example result="my%20doc.xml">escape-uri("my doc.xml", false())</example>
         <example result="f%2Bo.pdf">escape-uri("f+o.pdf", true())</example>
         <example result="f+o.pdf">escape-uri("f+o.pdf", false())</example>   
         <example result="Gr\%C3\%BC\%C3%9Fe.html">escape-uri("Grüße.html", true())</example>
         <example result="Gr\%C3\%BC\%C3%9Fe.html">escape-uri("Grüße.html", false())</example>
       </group>
       <group section="exists">
          <source-document>     
              <para>See also <a ref="elsewhere.xml" style=""/>.</para>
          </source-document>
         <example result="true">exists(/para)</example>
         <example result="true">exists(/para/a)</example>
         <example result="true">exists(/para/a/@style)</example>
         <example result="false">exists(/para/b)</example>
         <example result="false">exists(/para/a[2])</example>
       </group>
       <group section="floor">
         <example result="1.0">floor(1.0)</example>
         <example result="1.0e0">floor(1.6e0) </example>   
         <example result="5.0">floor(17 div 3)</example>
         <example result="-3.0">floor(-3.0)</example>
         <example result="-9.0e0">floor(-8.2e0)</example>
         <example result="NaN">floor(number('NaN'))</example>
       </group>
       <group section="hours-from-dateTime/time">
         <example result="12">hours-from-time(xs:time("12:35:03.142"))</example>
         <example result="13">hours-from-dateTime(xs:dateTime("2004-02-28T13:55:30"))</example>
         <example result="23">hours-from-time(xs:time("23:59:59+01:00"))</example>
         <example result="22">hours-from-dateTime(xs:dateTime("2004-07-31T22:10:00-05:00"))</example>
       </group>
       <group section="hours-from-dayTimeDuration">
         <example result="12">hours-from-dayTimeDuration(xdt:dayTimeDuration("P5DT12H30M"))</example>   
         <example result="0">hours-from-dayTimeDuration(xdt:dayTimeDuration("PT72H"))</example>
         <example result="-12">hours-from-dayTimeDuration(xdt:dayTimeDuration("-PT36H15M"))</example>
       </group>
       <group section="index-of">
         <source-document>
              <doc>
                <obs at="10:42:06" colors="red green"/>
                <obs at="11:43:12" colors="green blue orange"/>
              </doc>     
         </source-document>
         <example result="1">index-of(//@colors, "red")</example>
         <example result="2, 3">index-of(//@colors, "green")</example>
         <example result="()">index-of(//@colors, "pink")</example>
       </group>
       <group section="insert-before">
         <example result="(1, 2, 3, 99, 100, 4, 5) ">insert-before(1 to 5, 4, (99, 100))</example>
         <example result="(99, 1, 2, 3, 4, 5)">insert-before(1 to 5, 0, 99)</example>
         <example result="(1, 2, 3, 4, 5, 99)">insert-before(1 to 5, 10, 99)</example>
       </group>
       <group section="lang">
         <example>boolean(//*[lang('de')])</example>   
         <example>/*/msg[applet.class="p"][lang('fr')]</example>
       </group>
       <group section="local-name">
         <source-document>
           <my:doc xmlns:my="some.uri" security="high"/> 
         </source-document>
         <example result="">local-name(/)</example>
         <example result="doc">local-name(/*)</example>
         <example result="security">local-name(/*/@*)</example>
       </group>
       <group section="lower-case">
         <example result="sunday">lower-case("Sunday")</example>
         <example result="2+2">lower-case("2+2")</example>
         <example result="césar">lower-case("CÉSAR")</example>
       </group>
       <group section="matches">
          <source-document>
              <verse>A grand little lad was young Albert
              All dressed in his best, quite a swell
              With a stick with an horse's head handle
              The finest that Woolworth’s could sell.</verse>
         </source-document>
         <example result="true">matches(e, "grand")</example>
         <example result="true">matches(e, "^The finest", "m")</example>   
         <example result="true">matches(e, "(^.*){4}", "m")</example>
         <example result="true">matches(e, "Albert.*Woolworth's", "s")</example>
         <example result="true">matches(e, "with", "i")</example>
         <example result="true">matches("banana", "^(.a)+")</example>
         <example result="true">matches("23 May 2003", "^[0-9]+\s[A-Z][a-z]+\s[0-9]+")</example>
         <example result="true">matches("", "a*")</example>
       </group>
       <group section="max">
         <example result="20">max((10, 20, -5, 13))</example>
         <example result="x">max(("a", "x", "b"))</example>
         <example result="2">max(2)</example>   
         <example result="()">max(())</example>
       </group>
       <group section="min">
         <example result="-5">min((10, 20, -5, 13))</example>
         <example result="a">min(("a", "x", "b"))</example>
         <example result="2">min(2)</example>
         <example result="()">min(())</example>
       </group>
       <group section="minutes-from-dateTime/time">
         <example result="35">minutes-from-time(xs:time("12:35:03.142"))</example>
         <example result="55">minutes-from-dateTime(xs:dateTime("2004-02-28T13:55:30"))</example>
         <example result="30">minutes-from-time(xs:time("00:30:02+01:00"))</example>
         <example result="10">minutes-from-dateTime(xs:dateTime("2004-07-31T03:10:00+08:30"))</example>   
       </group>
       <group section="minutes-from-dayTimeDuration">
         <example result="20">minutes-from-dayTimeDuration(xdt:dayTimeDuration("PT12H20M"))</example>
         <example result="">minutes-from-dayTimeDuration(xdt:dayTimeDuration("PT210S"))</example>
         <example result="-15">minutes-from-dayTimeDuration(xdt:dayTimeDuration("-PT75M"))</example>
       </group>
       <group section="month-from-date/dateTime">
         <example result="2">month-from-date(xs:date("2004-02-28"))</example>
         <example result="2">month-from-dateTime(xs:dateTime("2004-02-28T13:00:00"))</example>
         <example result="7">month-from-date(xs:date("2004-07-31+01:00"))</example>
         <example result="7">month-from-dateTime(xs:dateTime("2004-07-31T23:00:00-05:00"))</example>
       </group>
       <group section="months-from-yearMonthDuration">
         <example result="3">months-from-yearMonthDuration(xdt:yearMonthDuration("P1Y3M"))</example>
         <example result="3">months-from-yearMonthDuration(xdt:yearMonthDuration("P15M"))</example>   
         <example result="-3">months-from-yearMonthDuration(xdt:yearMonthDuration("-P1Y3M"))</example>
       </group>
       <group section="name">
         <source-document>
           <my:doc xmlns:my="some.uri" security="high"/> 
         </source-document>
         <example result="">name(/)</example>
         <example result="my:doc">name(/*)</example>
         <example result="security">name(/*/@*)</example>
       </group>     
       <group section="namespace-uri">
         <source-document>
           <my:doc xmlns:my="some.uri" security="high"/> 
         </source-document>
         <example result="">namespace-uri(/)</example>
         <example result="some.uri">namespace-uri(/*)</example>
         <example result="">namespace-uri(/*/@security)</example>
         <example result="">namespace-uri(/*/namespace::my)</example>       
       </group>
       <group section="namespace-uri-from-QName">
         <example result="some.uri" test="no">namespace-uri-from-QName(expanded-QName('some.uri', invoice))</example>
         <example result="http://www.w3.org/XML/1998/namespace">namespace-uri-from-QName(node-name(@xml:space))</example>
       </group>
       <group section="normalize-space">
         <example result="the quick brown fox">normalize-space("  the &amp;#xa;  quick &amp;#x9; brown   fox  ")</example>
         <example result="">normalize-space("   ")</example>
         <example result="piano">normalize-space("piano")</example>
         <example result="">normalize-space(())</example>
       </group>
       <group section="normalize-unicode">
         <example test="no" result="garçon">normalize-unicode("garc¸on")</example>
         <example test="no" result="garc¸on">normalize-unicode("garçon", "NFD")</example>
       </group>
       <group section="not">
         <example>not(*)</example>
         <example>not(normalize-space(@a))</example>
         <example>not(author="Kay")</example>
       </group>
       <group section="number">
         <example result="12.3e0">number(12.3)</example>
         <example result="12.3e0">number("12.3")</example>
         <example result="1.0e0">number(true())</example>   
         <example result="NaN">number("xyz")</example>
         <example result="NaN">number("")</example>
       </group>
       <group section="one-or-more">
         <example result="1">one-or-more(1)</example>
         <example result="1, 2, 3">one-or-more((1,2,3))</example>
         <example error="true">one-or-more(())</example>
       </group>
       <group section="remove">
         <example result="1, 2, 3, 5">remove((1 to 5), 4)</example>
         <example result="1, 2, 3, 4, 5">remove((1 to 5), 10)</example>
         <example result="()">remove((), 1)</example>
       </group>
       <group section="replace">
         <example result="bonono">replace("banana", "a", "o")</example>          
         <example result="b[ana][na]">replace("banana", "(ana|na)", "[$1]")</example>
         <example result="b**a">replace("banana", "(an)+", "**")</example>
         <example result="b****a">replace("banana", "(an)+?", "**")</example>
       </group>
       <group section="resolve-QName">
         <source-document>
              <doc xmlns:one="one.uri" xmlns="default.uri">
                <chap xmlns="" att-one="text">
                  <data-one>one:value</data-one>
                  <data-two>value</data-two>
                </chap>
              </doc>
         </source-document>
         <example result="{default.uri}text">resolve-QName(chap/@att-one, chap)</example>
         <example result="{one.uri}value">resolve-QName(string(data1), data1)</example>
         <example result="{}value">resolve-QName(string(data2), data2)</example>   
       </group>
       <group section="resolve-uri" xml:base="http://a/b/c/d;p?q">
         <source-document>
           <doc xml:base="http://a/b/c/d;p?q"/>
         </source-document>
         <example result="http://a/b/c/g">resolve-uri("g")</example>
         <example result="http://a/b/c/g">resolve-uri("./g")</example>
         <example result="http://a/b/c/g/">resolve-uri("g/")</example>
         <example result="http://a/g">resolve-uri("/g")</example>
         <example result="http://a/b/c/?y">resolve-uri("?y")</example>
         <example result="http://a/b/c/g?y">resolve-uri("g?y")</example>
         <example result="http://a/b/c/d (but see Note)">resolve-uri("")</example>
         <example result="http://a/b/c/d#s (but see Note)">resolve-uri("#s")</example>
         <example result="http://a/b/g">resolve-uri("../g")</example>
       </group>
       <group section="reverse">  
         <example result="5, 4, 3, 2, 1">reverse(1 to 5)</example>
         <example result="1">reverse(1)</example>
         <example result="()">reverse(())</example>
         <example>reverse(ancestor::*)</example>
       </group>
       <group section="round">
         <example result="3.2">round(3.2)</example>
         <example result="5.0e0">round(4.6e0)        </example>   
         <example result="8.0">round(7.5)</example>
         <example result="-7.0">round(-7.5)</example>
         <example result="-0.0e0">round(-0.0e0)</example>
       </group>
       <group section="round-half-to-even">     
         <example result="1.17">round-half-to-even(1.1742, 2)</example>
         <example result="1.18">round-half-to-even(1.175, 2)</example>
         <example result="2.0">round-half-to-even(2.5, 0) </example>
         <example result="270">round-half-to-even(273, -1)</example>
         <example result="-8000">round-half-to-even(-8500, -3)</example>
       </group>
       <group section="seconds-from-date/dateTime"> 
         <example result="3.142">seconds-from-time(xs:time("12:35:03.142"))</example>          
         <example result="30.0">seconds-from-dateTime(xs:dateTime("2004-02-28T13:55:30-01:00"))</example>
       </group>
       <group section="seconds-from-dayTimeDuration">
         <example result="30.5">seconds-from-dayTimeDuration(xdt:dayTimeDuration("PT1M30.5S"))</example>
         <example result="30">seconds-from-dayTimeDuration(xdt:dayTimeDuration("PT150S"))</example>
         <example result="-0.0055">seconds-from-dayTimeDuration(xdt:dayTimeDuration("-P0.0055S"))</example>
       </group>
       <group section="starts-with">
         <example result="true">starts-with('#note', '#')</example>
         <example result="true">starts-with('yes', 'yes')</example>   
         <example result="false">starts-with('YES', 'yes')</example>
         <example result="true">starts-with('yes', '')</example>
       </group>
       <group section="string">
         <source-document>
            <e example="yes"><first>17</first><second>blue</second></e>
         </source-document>
         <example result="17blue">string()</example>
         <example result="17">string(first)</example>
         <example result="blue">string(second)</example>
         <example result="yes">string(@example)</example>
         <example result="47.2">string(+47.20)</example>
         <example result="true">string(2=2)</example>
         <example error="true">string(*)</example> 
       </group>
       <group section="string-join">
         <example result="a, b, c">string-join(("a", "b", "c"), ", ")</example>
         <example result="ABC">string-join(("A", "B", "C"), "")</example>
         <example result="Z">string-join("Z", "+")</example>
         <example result="()">string-join((), "~")</example>
       </group>
       <group section="string-length"> 
         <example result="3">string-length("abc")</example>
         <example result="2">string-length("&lt;&gt;")</example>
         <example result="1">string-length("""")</example>
         <example result="0">string-length("")</example>  
         <example result="1">string-length('&#xFFFD;')</example>
         <example result="1">string-length('&#x20000;')</example>
       </group>
       <group section="string-to-codepoints">
         <example result="65, 83, 67, 73, 73">string-to-codepoints("ASCII")</example>
         <example result="100000">string-to-codepoints("&#100000;")</example>
         <example result="()">string-to-codepoints("")</example>
       </group>
       <group section="subsequence">       
         <example result="4, 5, 6, 7, 8, 9, 10">subsequence(3 to 10, 2)</example>
         <example result="7, 8">subsequence(3 to 10, 5, 2)</example>
         <example result="()">subsequence(1 to 5, 10)</example>  
         <example result="2, 3, 4, 5, 6">subsequence(1 to 10, 2.3, 4.6) </example>
       </group>
       <group section="substring">
         <example result="bcde">substring("abcde", 2)</example>
         <example result="bc">substring("abcde", 2, 2)</example>
         <example result="">substring("abcde", 10, 2)</example>
         <example result="abcde">substring("abcde", 1, 20)</example>
       </group>
       <group section="substring-after">
         <example result="xml">substring-after("my.xml", ".")</example>
         <example result="y.xml">substring-after("my.xml", "m")</example>
         <example result="">substring-after("my.xml", "xml")</example>  
         <example result="">substring-after("my.xml", "#")</example>
         <example result="">substring-after("", "#")</example>
         <example result="my.xml">substring-after("my.xml", "")</example>
       </group>
       <group section="substring-before">
         <example result="my">substring-before("my.xml", ".")</example>
         <example result="my-">substring-before("my-xml.xml", "xml")</example>
         <example result="">substring-before("my.xml", "")</example>
         <example result="">substring-before("my.xml", "#")</example>
       </group>
       <group section="subtract-dates/dateTimes">
         <example test="no" result="P184D">subtract-dates-yielding-dayTimeDuration(xs:date("2005-01-01"), xs:date("2004-07-01"))</example>  
         <example test="no" result="-P2D">subtract-dates-yielding-dayTimeDuration(xs:date("2004-02-28"), xs:date("2004-03-01"))</example>
         <example test="no" result="P6M">subtract-dates-yielding-yearMonthDuration(xs:date("2005-01-01"), xs:date("2004-07-01"))</example>
         <example test="no" result="P1Y6M">subtract-dates-yielding-yearMonthDuration(xs:date("2005-12-31"), xs:date("2004-06-30"))</example>
         <example test="no" result="P1Y1M">subtract-dates-yielding-yearMonthDuration(xs:date("2005-03-31"), xs:date("2004-02-29"))</example>
         <example test="no" result="-P1M">subtract-dates-yielding-yearMonthDuration(xs:date("2004-11-01"), xs:date("2004-12-15"))</example>
         <example test="no" result="-P11M">subtract-dateTimes-yielding-yearMonthDuration(xs:dateTime("2005-01-01T12:00:00Z"), xs:dateTime("2004-01-01T18:00:00Z"))</example>
       </group>
       <group section="sum">
         <example result="10 (xs:integer)">sum((1, 2, 3, 4))</example>
         <example result="10.5 (xs:decimal)">sum((1, 2, 3, 4.5))</example>  
         <example result="11.0e0 (xs:double)">sum((1, 2, 3.5e0, 4.5))</example>
         <example result="0.0e0 (xs:double)">sum(())</example>
         <example test="no" result="0 (xs:integer)">sum((), 0)</example>
         <example test="no" result="P4DT12H">sum(xdt:dayTimeDuration("P3D"), xdt:dayTimeDuration("PT36H"))</example>
         <example test="no" result="PT0S">sum((), xdt:dayTimeDuration("PT0S"))</example>
       </group>
       <group section="timezone-from-date/time">   
         <example result=" ()">timezone-from-date(xs:date("2004-02-28"))</example>
         <example result="-PT6H">timezone-from-dateTime(xs:dateTime("2004-02-28T13:00:00-06:00"))</example>
         <example result="PT1H">timezone-from-time(xs:time("13:00:00+01:00"))</example>  
         <example result="PT0S">timezone-from-dateTime(xs:dateTime("2004-07-31T23:00:00Z"))</example>
       </group>
       <group section="tokenize">   
         <example result="'Go', 'home', 'Jack', ''">tokenize("Go home, Jack!", "\W+")</example>
         <example result="'abc', 'def', ''">tokenize("abc[NL]def[XY]", "\[.*?\]")</example>
       </group>
       <group section="translate">
         <example result="ABA12">translate("aba12", "abcd", "ABCD")</example>
         <example result="aba">translate("aba121", "12", "")</example>
         <example result="a/b/c.xml">translate("a\b\c.xml", "\", "/")</example>
         <example result="5.000,00">translate("5,000.00", ".,", ",.")</example> 
       </group>
       <group section="upper-case"> 
         <example result="SUNDAY">upper-case("Sunday")</example>
         <example result="2+2">upper-case("2+2")</example>
         <example result="CÉSAR">upper-case("césar")</example>
       </group>
       <group section="year-from-date/time"> 
         <example result="2004">year-from-date(xs:date("2004-02-28"))</example>
         <example result="1969">year-from-dateTime(xs:dateTime("1969-07-20T16:17:00-04:00"))</example>
       </group>
     </chapter>
  </xpath-examples>


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.