topical media & game development
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*i in //item satisfies exists(x + (i in //product return i/qty)</example>
<example>avg( (//product)[position()<=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> seq[position() <= last() idiv 2] </example>
<example> item[position() mod 2 = 0] </example>
<example> count(date - xs:date("1901-01-06")) div xdt:dayTimeDuration("P1D") mod 7)]</example>
</group>
<group section="Value Comparisons">
<example>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 > 3 and x = 5 or paragraphs</example>
<example>sections[3]/body</example>
<example>winners//*/@name</example>
<example>.//..</example>
<example>chapter//footnote</example>
</group>
<group section="Predicates">
<example>para[position()>1]</example>
<example>chap//*</example>
<example test="no">key('a', 'Gilbert') intersect key('a', 'Sullivan')</example>
<example>exists(. intersect net, i in (1 to 4, 8, 13) return 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 seq[n]</example>
<example>i in 1 to i in 1 to count(S[T[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*i in 0 to 4 return 1 to i in 1 to 8, i, i in //item satisfies n in 1 to count(S[n+1]</example>
<example>every p/@dob castable as xs:date</example>
<example>some p in //para satisfies contains(k)</example>
<example>every r in //termref satisfies r/@def</example>
</group>
</chapter>
<chapter number="9">
<group section="The instance of Operator">
<example>s in s instance of node()) then 0 else 1</example>
<example>if (not(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="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-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-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(Mary/@age))</example>
<example result="false">boolean(count(John/@surname))</example>
<example result="true">boolean(string(n)</example>
</group>
<group section="compare">
<example result="-1">compare("espace", "espacer") </example>
<example result="-1">compare("espace", "espacé", weak)</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/@colors)</example>
<example error="true">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[2])</example>
<example result="true">deep-equal(doc/e[3], doc/e[1]/@*, 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="e, "grand")</example>
<example result="true">matches(e, "(^.*e, "Albert.*Woolworth's", "s")</example>
<example result="true">matches(")</example>
<example result="true">matches("23 May 2003", "^[0-9]+\s[A-Z][a-z]+\s[0-9]+chap/@att-one, data1), data2),
(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.