Harold and the Purple Crayon
%%%
%%%
%%%
%%%
%%%
%%%Persian
%%%3618
%%%{1}
%%%{1, 2, 3}
%%%{1}{2}{3}
%%%{1, "2", "3"}
%%%I saw 8 cats.
%%%I saw {5 + 3} cats.
%%%I saw {5 + 3} cats.
%%%Harold and the Purple CrayonCrockettJohnson
%%%{$b}{$c}
%%% {"abc"}
%%%abc
%%% abc
%%% z {"abc"}
%%% z abc
%%% {"abc"}
%%% abc
%%%{" "}
%%%
%%%
%%%element book {
attribute isbn {"isbn-0060229357" },
element title { "Harold and the Purple Crayon"},
element author {
element first { "Crockett" },
element last {"Johnson" }
}
}
%%%element {fn:node-name($e)}
{$e/@*, 2 * fn:data($e)}
%%%
Adresseindirizzo
%%%
123 Roosevelt Ave. Flushing, NY 11368
%%%
element
{$dict/entry[@word=name($e)]/variant[@xml:lang="it"]}
{$e/@*, $e/node()}
%%%123 Roosevelt Ave. Flushing, NY 11368
%%%attribute size {4 + 3}
%%%attribute
{ if ($sex = "M") then "husband" else "wife" }
{ Hello, 1 to 3, Goodbye }
%%%document
{
{fn:doc("bib.xml")/bib/book/author}
}
%%%text {"Hello"}
%%%let $target := "audio-output",
$content := "beep"
return processing-instruction {$target} {$content}
%%%let $homebase := "Houston"
return comment {fn:concat($homebase, ", we have a problem.")}
%%%declare namespace p="http://example.com/ns/p";
declare namespace q="http://example.com/ns/q";
declare namespace f="http://example.com/ns/f";
%%%
3
%%%
3
%%%for $d in fn:doc("depts.xml")/depts/deptno
let $e := fn:doc("emps.xml")/emps/emp[deptno = $d]
where fn:count($e) >= 10
order by fn:avg($e/salary) descending
return
{
$d,
{fn:count($e)},
{fn:avg($e/salary)}
}
%%%for $d in fn:doc("depts.xml")/depts/deptno
let $e := fn:doc("emps.xml")/emps/emp[deptno = $d]
where fn:count($e) >= 10
order by fn:avg($e/salary) descending
return
{
$d,
{fn:count($e)},
{fn:avg($e/salary)}
}
%%%let $s := (, , )
return {$s}
%%%let $s := (, , )
return {$s}
%%%(,
, )
%%%for $s in (, , )
return {$s}
%%%for $s in (, , )
return {$s}
%%%for $x in $w, $a in f($x)
let $y := g($a)
for $z in p($x, $y)
return q($x, $y, $z)
%%%let $salary as xs:decimal := "cat"
return $salary * 2
%%%fn:avg(for $x at $i in $inputvalues
where $i mod 100 = 0
return $x)
%%%fn:avg(for $x at $i in $inputvalues
where $i mod 100 = 0
return $x)
%%%for $e in $employees
order by $e/salary descending
return $e/name
%%%for $e in $employees
order by $e/salary descending
return $e/name
%%%for $b in $books/book[price < 100]
order by $b/title
return $b
%%%for $b in $books/book[price < 100]
order by $b/title
return $b
%%%for $b in $books/book
stable order by $b/title
collation "http://www.example.org/collations/fr-ca",
$b/price descending empty least
return $b
%%%for $b in $books/book
stable order by $b/title
collation "http://www.example.org/collations/fr-ca",
$b/price descending empty least
return $b
%%%let $i := 5,
$j := 20 * i
return $i, $j
%%%let $i := 5,
$j := 20 * i
return ($i, $j)
%%%
{
for $a in fn:distinct-values($bib/book/author)
order by $a
return
{$a}
{
for $b in $bib/book[author = $a]
order by $b/title
return $b/title
}
}
%%%
{
for $a in fn:distinct-values($bib/book/author)
order by $a
return
{$a}
{
for $b in $bib/book[author = $a]
order by $b/title
return $b/title
}
}
%%%unordered {
for $p in fn:doc("parts.xml")/parts/part[color = "Red"],
$s in fn:doc("suppliers.xml")/suppliers/supplier
where $p/suppno = $s/suppno
return
{ $p/partno, $s/suppno }
}
%%%unordered {
for $p in fn:doc("parts.xml")/parts/part[color = "Red"],
$s in fn:doc("suppliers.xml")/suppliers/supplier
where $p/suppno = $s/suppno
return
{ $p/partno, $s/suppno }
}
%%%if ($widget1/unit-cost < $widget2/unit-cost)
then $widget1
else $widget2
%%%if ($part/@discounted)
then $part/wholesale
else $part/retail
%%%every $part in /parts/part satisfies $part/@discounted
%%%some $emp in /emps/employee satisfies
($emp/bonus > 0.25 * $emp/salary)
%%%some $x in (1, 2, 3), $y in (2, 3, 4)
satisfies $x + $y = 4
%%%some $x in (1, 2, 3), $y in (2, 3, 4)
satisfies $x + $y = 4
%%%every $x in (1, 2, 3), $y in (2, 3, 4)
satisfies $x + $y = 4
%%%every $x in (1, 2, 3), $y in (2, 3, 4)
satisfies $x + $y = 4
%%%some $x in (1, 2, "cat") satisfies $x * 2 = 4
%%%every $x in (1, 2, "cat") satisfies $x * 2 = 4
%%%some $x as xs:integer in (1, 2, "cat") satisfies $x * 2 = 4
%%%5 instance of xs:integer
%%%{5} instance of xs:integer
%%%. instance of element()
%%%typeswitch($customer/billing-address)
case $a as element(*, USAddress) return $a/state
case $a as element(*, CanadaAddress) return $a/province
case $a as element(*, JapanAddress) return $a/prefecture
default return "unknown"
%%%
if ($x castable as hatsize)
then $x cast as hatsize
else if ($x castable as IQ)
then $x cast as IQ
else $x cast as xs:string
%%%xs:date("2000-01-01")
%%%xs:decimal($floatvalue * 0.2E-5)
%%%xdt:dayTimeDuration("P21D")
%%%usa:zipcode("12345")
%%%17 cast as apple
%%%apple(17)
%%%$myaddress treat as element(*, USAddress)
%%%declare namespace exq = "http://example.org/XQueryImplementation";
(# exq:use-index #)
{ $bib/book/author[name='Berners-Lee'] }
%%%declare namespace exq = "http://example.org/XQueryImplementation";
for $x in
(# exq:distinct //city by @country #)
{ //city[not(@country = preceding::city/@country)] }
return f:show-city($x)
%%%declare namespace foo = "http://example.org";
Lentils
%%%declare namespace xx = "http://example.org";
let $i := Lentils
return $i/xx:bing
%%% Lentils
%%%declare function local:summary($emps as element(employee)*)
as element(dept)*
{
for $d in fn:distinct-values($emps/deptno)
let $e := $emps[deptno = $d]
return
{$d} {fn:count($e)} {fn:sum($e/salary)}
};
local:summary(fn:doc("acme_corp.xml")//employee[location = "Denver"])
%%%declare function local:depth($e as node()) as xs:integer
{
(: A node with no children has depth 1 :)
(: Otherwise, add 1 to max depth of children :)
if (fn:empty($e/*)) then 1
else fn:max(for $c in $e/* return local:depth($c)) + 1
};
local:depth(fn:doc("partlist.xml"))
%%%
{
for $i in fn:doc("catalog.xml")/items/item,
$p in fn:doc("parts.xml")/parts/part[partno = $i/partno],
$s in fn:doc("suppliers.xml")/suppliers
/supplier[suppno = $i/suppno]
order by $p/description, $s/suppname
return
{
$p/description,
$s/suppname,
$i/price
}
}
%%%for $s in fn:doc("suppliers.xml")/suppliers/supplier
order by $s/suppname
return
{
$s/suppname,
for $i in fn:doc("catalog.xml")/items/item
[suppno = $s/suppno],
$p in fn:doc("parts.xml")/parts/part
[partno = $i/pno]
order by $p/description
return $p/description
}
%%%
{
for $s in fn:doc("suppliers.xml")/suppliers/supplier
order by $s/suppname
return
{
$s/suppname,
for $i in fn:doc("catalog.xml")/items/item
[suppno = $s/suppno],
$p in fn:doc("parts.xml")/parts/part
[partno = $i/partno]
order by $p/description
return
{
$p/description,
$i/price
}
}
,
(: parts that have no supplier :)
{ for $p in fn:doc("parts.xml")/parts/part
where fn:empty(fn:doc("catalog.xml")/items/item
[partno = $p/partno] )
order by $p/description
return $p/description
}
}
%%%for $pn in fn:distinct-values(
fn:doc("catalog.xml")/items/item/partno)
let $i := fn:doc("catalog.xml")/items/item[partno = $pn]
where fn:count($i) >= 3
order by $pn
return
{$p} {fn:avg($i/price)}
%%%fn:avg($i/price)
%%%for $s in fn:distinct-values(
fn:doc("census.xml")/census/person/state),
$j in fn:distinct-values(
fn:doc("census.xml")/census/person/job)
let $p := fn:doc("census.xml")/census/person
[state = $s and job = $j]
order by $s, $j
return
if (fn:exists($p)) then
{$s} {$j} {fn:avg($p/income)}
else ()
%%%NebraskaDeep Sea Fisherman
%%%let $proc := /report/procedure[1]
for $i in $proc//action
where $i >> ($proc//incision)[1]
and $i << ($proc//incision)[2]
return $i
%%%let $proc := /report/procedure[1]
for $i in $proc//instrument
where local:precedes(($proc//incision)[1], $i)
and local:precedes($i, ($proc//incision)[2])
return $i
%%%for $proc in /report/procedure
where some $i in $proc//incision satisfies
fn:empty($proc//anesthesia[. << $i])
return $proc
%%%let $intro := //h2[text()="Introduction"],
$next-h := //(h1|h2)[. >> $intro][1]
return
{
$intro,
if (fn:empty($next-h))
then //node()[. >> $intro]
else //node()[. >> $intro and . << $next-h]
}
%%%local:sections-and-titles(fn:doc("cookbook.xml"))
%%%local:swizzle(fn:doc("plans.xml"))
%%%for $p in fn:distinct-values(/orders/order/product),
$s in fn:distinct-values(/orders/order/size),
$c in fn:distinct-values(/orders/order/color)
order by $p, $s, $c
return
if (fn:exists(/orders/order[product eq $p
and size eq $s and color eq $c]))
then
else ()
%%%