|
Implementations | ||||||||||||||||
Tests | BaseX 7.7 XQ30 |
EMC/xDB xDB_main_r2411365 XQ30 |
Saxon-EE 9.5.1.1 XP20 |
Saxon-EE 9.5.1.1 XQ10 |
Saxon-EE 9.5.1.1 XP30 |
Saxon-EE 9.5.1.1 XQ30 |
Saxon-EE 9.5.1.4 XQX30 (QT3 v1.1) |
XmlPrime 3.0.0.0 XP30 (QT3 vCVS) |
XmlPrime 3.0.0.0 XQ30 (QT3 vCVS) |
XmlPrime 3.0.0.0 XQX30 (QT3 vCVS) |
XmlPrime 3.0.0.0 XP20 (QT3 vCVS) |
XmlPrime 3.0.0.0 XQX10 (QT3 vCVS) |
XmlPrime 3.0.0.0 XQ10 (QT3 vCVS) |
Zorba 2.9 XQ10 (QT3 vCVS) |
Zorba 2.9 XQ30 (QT3 vCVS) |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
prod-AxisStep.ancestor | 43/43 | 43/43 | 21/21 | 43/43 | 21/21 | 43/43 | 43/43 | 21/21 | 43/43 | 43/43 | 21/21 | 43/43 | 43/43 | 43/43 | 43/43 | 3/15 |
ancestor-1[+]
X ancestor-1: (200)/ancestor::* |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-2[+]
X ancestor-2: fn:count(/works/employee[1]/ancestor::noSuchNode) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-3[+]
X ancestor-3: exactly-one(/works/employee[1]/ancestor::works) is exactly-one(/works) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-4[+]
X ancestor-4: exactly-one(/works/employee[1]/ancestor::works) is exactly-one(/works/employee[1]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-5[+]
X ancestor-5: exactly-one(/works/employee[1]/ancestor::works) << exactly-one(/works/employee[1]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-6[+]
X ancestor-6: exactly-one(/works/employee[1]/ancestor::works) << exactly-one(/works/employee[1]/ancestor::works) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-7[+]
X ancestor-7: exactly-one(/works/employee[1]/ancestor::works) << exactly-one(/works/employee[1]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-8[+]
X ancestor-8: exactly-one(/works/employee[1]) >> exactly-one(/works/employee[1]/ancestor::works) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-9[+]
X ancestor-9: exactly-one(/works/employee[1]/ancestor::works) >> exactly-one(/works/employee[1]/ancestor::works) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-10[+]
X ancestor-10: exactly-one(/works/employee[1]/ancestor::works) >> exactly-one(/works/employee[1]/hours) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-11[+]
X ancestor-11: (/works/employee[12]/*/day/ancestor::overtime) | (/works/employee[12]/*/day/ancestor::overtime) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-12[+]
X ancestor-12: (/works/employee[12]/*/day[1]/ancestor::overtime) | (/works/employee[12]/*/day[2]/ancestor::overtime) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-13[+]
X ancestor-13: (/works/employee[12]/overtime/day/ancestor::employee) intersect (/works/employee[12]/overtime/day/ancestor::employee) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-14[+]
X ancestor-14: fn:count((/works/employee[12]/overtime/day[ancestor::overtime]) except (/works/employee[12]/overtime/day[ancestor::overtime])) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-15[+]
X ancestor-15: (/works/employee[12]/overtime/day[ancestor::overtime]) except (/works/employee[12]/overtime/day[1]) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-16[+]
X ancestor-16: (/works/employee[12]/overtime/day[ancestor::overtime]) and fn:true() |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-17[+]
X ancestor-17: (/works/employee[12]/overtime/day[ancestor::overtime]) and fn:false() |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-18[+]
X ancestor-18: (/works/employee[12]/overtime/day[ancestor::overtime]) or fn:true() |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-19[+]
X ancestor-19: (/works/employee[12]/overtime/day[ancestor::overtime]) or fn:false() |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-20[+]
X ancestor-20: fn:deep-equal(/works/employee[12]/overtime/ancestor::works,/works/employee[12]/overtime/ancestor::works) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
ancestor-21[+]
X ancestor-21: let $var := <anElement>Some Content</anElement> return fn:count($var/ancestor::*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
unabbreviatedSyntax-10[+]
X unabbreviatedSyntax-10: for $h in (/works/employee[1]/hours) return $h/ancestor::employee |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-ancestorAxis-1[+]
X K2-ancestorAxis-1: empty(<?target data?>/ancestor::node()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-2[+]
X K2-ancestorAxis-2: empty(<!-- content -->/ancestor::node()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-3[+]
X K2-ancestorAxis-3: empty(<anElement/>/ancestor::node()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-4[+]
X K2-ancestorAxis-4: empty(attribute name {"content"}/ancestor::node()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-5[+]
X K2-ancestorAxis-5: empty(document {()}/ancestor::node()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-6[+]
X K2-ancestorAxis-6: empty(document {<e><f/><f/>text</e>}/ancestor::node()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-7[+]
X K2-ancestorAxis-7: <a> <b c=""> <c/> </b> <d/> </a>/b/c/ancestor::* |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-8[+]
X K2-ancestorAxis-8: <a> <b c=""> <c/> </b> <d/> </a>/b/c/ancestor::*[1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-9[+]
X K2-ancestorAxis-9: <a> <b c=""> <c/> </b> <d/> </a>/b/c/(ancestor::*)[1] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-10[+]
X K2-ancestorAxis-10: empty(<element/>/ancestor::node()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-11[+]
X K2-ancestorAxis-11: <a> <b c=""> <c/> </b> <d/> </a>/b/c/ancestor::*[fn:last()] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-12[+]
X K2-ancestorAxis-12: <a> <b c=""> <c/> </b> <d/> </a>/b/c/(ancestor::*)[last()] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-13[+]
X K2-ancestorAxis-13: 1, <element/>/ancestor::node(), 1 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-14[+]
X K2-ancestorAxis-14: 1, <?target data?>/ancestor::node(), 1 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-15[+]
X K2-ancestorAxis-15: 1, attribute name {"content"}/ancestor::node(), 1 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-16[+]
X K2-ancestorAxis-16: 1, <!-- content -->/ancestor::node(), 1 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-17[+]
X K2-ancestorAxis-17: document {()}/ancestor::node(), count(document {()}/ancestor::node()), 1 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-18[+]
X K2-ancestorAxis-18: 1, text {""}/ancestor::node(), 1 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-19[+]
X K2-ancestorAxis-19: count(<a> <b c=""> <c/> </b> <d/> </a>/b/c/(ancestor::*)) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-20[+]
X K2-ancestorAxis-20: <a> <b c=""> <c/> </b> <d/> </a>//count(ancestor::*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-ancestorAxis-21[+]
X K2-ancestorAxis-21: <r> <a> <b> <c/> </b> </a> </r>/a/b/c/(ancestor::*[1], ancestor::*[2], ancestor::*[last()], ancestor::*[10]) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass |