|
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 | 332/332 | 325/332 | 232/232 | 330/330 | 236/236 | 332/332 | 303/332 | 236/236 | 332/332 | 332/332 | 232/232 | 330/330 | 330/330 | 330/330 | 332/332 | 0/15 |
Axes001-1[+]
X Axes001-1: fn:count(//center/child::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes001-2[+]
X Axes001-2: fn:count(//center/child::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes001-3[+]
X Axes001-3: fn:count(//center/child::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes002-1[+]
X Axes002-1: fn:count(//center/child::south-east) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes002-2[+]
X Axes002-2: fn:count(//center/child::south-east) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes002-3[+]
X Axes002-3: fn:count(//center/child::south-east) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes002-4[+]
X Axes002-4: fn:count(//center/child::south-east) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes003-1[+]
X Axes003-1: fn:count(//center/child::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes003-2[+]
X Axes003-2: fn:count(//center/child::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes003-3[+]
X Axes003-3: fn:count(//center/child::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes003-4[+]
X Axes003-4: fn:count(//center/child::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes004-1[+]
X Axes004-1: fn:count(//center/*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes004-2[+]
X Axes004-2: fn:count(//center/*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes004-3[+]
X Axes004-3: fn:count(//center/*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes005-1[+]
X Axes005-1: fn:count(//center/south-east) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes005-2[+]
X Axes005-2: fn:count(//center/south-east) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes005-3[+]
X Axes005-3: fn:count(//center/south-east) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes005-4[+]
X Axes005-4: fn:count(//center/south-east) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes006-1[+]
X Axes006-1: fn:count(//center/node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes006-2[+]
X Axes006-2: fn:count(//center/node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes006-3[+]
X Axes006-3: fn:count(//center/node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes006-4[+]
X Axes006-4: fn:count(//center/node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes007-1[+]
X Axes007-1: fn:count(//west/attribute::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes007-2[+]
X Axes007-2: fn:count(//west/attribute::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes007-3[+]
X Axes007-3: fn:count(//west/attribute::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes008-1[+]
X Axes008-1: fn:count(//west/attribute::west-attr-2) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes008-2[+]
X Axes008-2: fn:count(//west/attribute::west-attr-2) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes008-3[+]
X Axes008-3: fn:count(//west/attribute::west-attr-2) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes009-1[+]
X Axes009-1: fn:count(//west/attribute::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes009-2[+]
X Axes009-2: fn:count(//west/attribute::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes009-3[+]
X Axes009-3: fn:count(//west/attribute::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes010-1[+]
X Axes010-1: fn:count(//west/@*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes010-2[+]
X Axes010-2: fn:count(//west/@*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes010-3[+]
X Axes010-3: fn:count(//west/@*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes011-1[+]
X Axes011-1: fn:count(//west/@west-attr-2) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes011-2[+]
X Axes011-2: fn:count(//west/@west-attr-2) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes011-3[+]
X Axes011-3: fn:count(//west/@west-attr-2) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes012-1[+]
X Axes012-1: fn:count( / ) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes013-1[+]
X Axes013-1: fn:count(//center/parent::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes014-1[+]
X Axes014-1: fn:count(/far-north/parent::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes015-1[+]
X Axes015-1: fn:count(//center/parent::near-north) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes016-1[+]
X Axes016-1: fn:count(//center/parent::nowhere) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes017-1[+]
X Axes017-1: fn:count(//center/parent::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes018-1[+]
X Axes018-1: fn:count(/far-north/parent::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes019-1[+]
X Axes019-1: fn:count(//center/..) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes020-1[+]
X Axes020-1: fn:count(//center/self::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes021-1[+]
X Axes021-1: fn:count(//center/self::center) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes023-1[+]
X Axes023-1: fn:count(//center/self::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes027-1[+]
X Axes027-1: fn:count(//center/@center-attr-3/self::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes030-1[+]
X Axes030-1: fn:count(//center/text()/self::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes030-2[+]
X Axes030-2: fn:count(//center/text()/self::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes031-1[+]
X Axes031-1: fn:count(//center/descendant::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes031-2[+]
X Axes031-2: fn:count(//center/descendant::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes031-3[+]
X Axes031-3: fn:count(//center/descendant::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes031-4[+]
X Axes031-4: fn:count(//center/descendant::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes032-1[+]
X Axes032-1: fn:count(//center/descendant::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes032-2[+]
X Axes032-2: fn:count(//center/descendant::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes032-3[+]
X Axes032-3: fn:count(//center/descendant::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes032-4[+]
X Axes032-4: fn:count(//center/descendant::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes033-1[+]
X Axes033-1: fn:count(//center/descendant::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes033-2[+]
X Axes033-2: fn:count(//center/descendant::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes033-3[+]
X Axes033-3: fn:count(//center/descendant::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes033-4[+]
X Axes033-4: fn:count(//center/descendant::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes034-1[+]
X Axes034-1: fn:count(//center/descendant-or-self::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes034-2[+]
X Axes034-2: fn:count(//center/descendant-or-self::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes035-1[+]
X Axes035-1: fn:count(//center/descendant-or-self::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes035-2[+]
X Axes035-2: fn:count(//center/descendant-or-self::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes035-3[+]
X Axes035-3: fn:count(//center/descendant-or-self::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes035-4[+]
X Axes035-4: fn:count(//center/descendant-or-self::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes036-1[+]
X Axes036-1: fn:count(//center/descendant-or-self::center) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes036-2[+]
X Axes036-2: fn:count(//center/descendant-or-self::center) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes037-1[+]
X Axes037-1: fn:count(//center/descendant-or-self::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes037-2[+]
X Axes037-2: fn:count(//center/descendant-or-self::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes041-1[+]
X Axes041-1: fn:count(//center/@center-attr-3/descendant-or-self::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes043-1[+]
X Axes043-1: fn:count(//center/text()/descendant-or-self::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes043-2[+]
X Axes043-2: fn:count(//center/text()/descendant-or-self::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes044-1[+]
X Axes044-1: fn:count(/child::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes044-2[+]
X Axes044-2: fn:count(/child::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes045-1[+]
X Axes045-1: fn:count(/child::far-north) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes045-2[+]
X Axes045-2: fn:count(/child::far-north) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes046-1[+]
X Axes046-1: fn:count(/child::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes046-2[+]
X Axes046-2: fn:count(/child::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes047-1[+]
X Axes047-1: fn:count(/*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes047-2[+]
X Axes047-2: fn:count(/*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes048-1[+]
X Axes048-1: fn:count(/far-north) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes048-2[+]
X Axes048-2: fn:count(/far-north) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes049-1[+]
X Axes049-1: fn:count(/node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes049-2[+]
X Axes049-2: fn:count(/node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes055-1[+]
X Axes055-1: fn:count(/self::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes056-1[+]
X Axes056-1: fn:count(/descendant::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes056-2[+]
X Axes056-2: fn:count(/descendant::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes056-3[+]
X Axes056-3: fn:count(/descendant::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes057-1[+]
X Axes057-1: fn:count(/descendant::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes057-2[+]
X Axes057-2: fn:count(/descendant::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes057-3[+]
X Axes057-3: fn:count(/descendant::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes057-4[+]
X Axes057-4: fn:count(/descendant::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes058-1[+]
X Axes058-1: fn:count(/descendant::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes058-2[+]
X Axes058-2: fn:count(/descendant::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes058-3[+]
X Axes058-3: fn:count(/descendant::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes059-1[+]
X Axes059-1: fn:count(/descendant-or-self::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes059-2[+]
X Axes059-2: fn:count(/descendant-or-self::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes060-1[+]
X Axes060-1: fn:count(/descendant-or-self::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes060-2[+]
X Axes060-2: fn:count(/descendant-or-self::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes060-3[+]
X Axes060-3: fn:count(/descendant-or-self::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes060-4[+]
X Axes060-4: fn:count(/descendant-or-self::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes061-1[+]
X Axes061-1: fn:count(/descendant-or-self::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes061-2[+]
X Axes061-2: fn:count(/descendant-or-self::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes062-1[+]
X Axes062-1: fn:count(//child::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes062-2[+]
X Axes062-2: fn:count(//child::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes063-1[+]
X Axes063-1: fn:count(//child::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes063-2[+]
X Axes063-2: fn:count(//child::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes063-3[+]
X Axes063-3: fn:count(//child::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes063-4[+]
X Axes063-4: fn:count(//child::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes064-1[+]
X Axes064-1: fn:count(//child::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes064-2[+]
X Axes064-2: fn:count(//child::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes064-3[+]
X Axes064-3: fn:count(//child::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes065-1[+]
X Axes065-1: fn:count(//*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes065-2[+]
X Axes065-2: fn:count(//*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes066-1[+]
X Axes066-1: fn:count(//south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes066-2[+]
X Axes066-2: fn:count(//south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes066-3[+]
X Axes066-3: fn:count(//south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes066-4[+]
X Axes066-4: fn:count(//south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes067-1[+]
X Axes067-1: fn:count(//node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes067-2[+]
X Axes067-2: fn:count(//node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes067-3[+]
X Axes067-3: fn:count(//node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes068-1[+]
X Axes068-1: fn:count(//attribute::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes068-2[+]
X Axes068-2: fn:count(//attribute::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes068-3[+]
X Axes068-3: fn:count(//attribute::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes069-1[+]
X Axes069-1: fn:count(//attribute::mark) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes069-2[+]
X Axes069-2: fn:count(//attribute::mark) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes069-3[+]
X Axes069-3: fn:count(//attribute::mark) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes070-1[+]
X Axes070-1: fn:count(//@*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes070-2[+]
X Axes070-2: fn:count(//@*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes070-3[+]
X Axes070-3: fn:count(//@*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes071-1[+]
X Axes071-1: fn:count(//@mark) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes071-2[+]
X Axes071-2: fn:count(//@mark) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes071-3[+]
X Axes071-3: fn:count(//@mark) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes072-1[+]
X Axes072-1: fn:count(//self::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes072-2[+]
X Axes072-2: fn:count(//self::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes073-1[+]
X Axes073-1: fn:count(//self::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes073-2[+]
X Axes073-2: fn:count(//self::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes074-1[+]
X Axes074-1: fn:count(//center//child::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes074-2[+]
X Axes074-2: fn:count(//center//child::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes074-3[+]
X Axes074-3: fn:count(//center//child::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes074-4[+]
X Axes074-4: fn:count(//center//child::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes075-1[+]
X Axes075-1: fn:count(//center//child::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes075-2[+]
X Axes075-2: fn:count(//center//child::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes075-3[+]
X Axes075-3: fn:count(//center//child::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes075-4[+]
X Axes075-4: fn:count(//center//child::south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes076-1[+]
X Axes076-1: fn:count(//center//child::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes076-2[+]
X Axes076-2: fn:count(//center//child::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes076-3[+]
X Axes076-3: fn:count(//center//child::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes076-4[+]
X Axes076-4: fn:count(//center//child::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes077-1[+]
X Axes077-1: fn:count(//center//*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes077-2[+]
X Axes077-2: fn:count(//center//*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes077-3[+]
X Axes077-3: fn:count(//center//*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes078-1[+]
X Axes078-1: fn:count(//center//south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes078-2[+]
X Axes078-2: fn:count(//center//south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes078-3[+]
X Axes078-3: fn:count(//center//south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes078-4[+]
X Axes078-4: fn:count(//center//south) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes079-1[+]
X Axes079-1: fn:count(//center//node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes079-2[+]
X Axes079-2: fn:count(//center//node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes079-3[+]
X Axes079-3: fn:count(//center//node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes079-4[+]
X Axes079-4: fn:count(//center//node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes080-1[+]
X Axes080-1: fn:count(//west//attribute::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes080-2[+]
X Axes080-2: fn:count(//west//attribute::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes080-3[+]
X Axes080-3: fn:count(//west//attribute::*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes081-1[+]
X Axes081-1: fn:count(//center//attribute::center-attr-2) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes081-2[+]
X Axes081-2: fn:count(//center//attribute::center-attr-2) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes081-3[+]
X Axes081-3: fn:count(//center//attribute::center-attr-2) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes081-4[+]
X Axes081-4: fn:count(//center//attribute::center-attr-2) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes082-1[+]
X Axes082-1: fn:count(//west//attribute::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes082-2[+]
X Axes082-2: fn:count(//west//attribute::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes082-3[+]
X Axes082-3: fn:count(//west//attribute::node()) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes083-1[+]
X Axes083-1: fn:count(//west//@*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes083-2[+]
X Axes083-2: fn:count(//west//@*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes083-3[+]
X Axes083-3: fn:count(//west//@*) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes084-1[+]
X Axes084-1: fn:count(//center//@center-attr-2) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes084-2[+]
X Axes084-2: fn:count(//center//@center-attr-2) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes084-3[+]
X Axes084-3: fn:count(//center//@center-attr-2) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes084-4[+]
X Axes084-4: fn:count(//center//@center-attr-2) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes085[+]
X Axes085: <root> {//Customers} </root> |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes086[+]
X Axes086: <root> {//@*/..} </root> |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes087[+]
X Axes087: <root> {/doc/part/*/text()/..} </root> |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes088[+]
X Axes088: /*/ |
pass | wrongError
expected: XPST0003 actualCode: XPDY0002 |
no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
Axes089[+]
X Axes089: xquery version "1.0"; declare namespace saxon="http://example.com/VendorNamespace"; declare namespace tour="http://example.com/Knight'sTour"; (: XQuery program to perform a knight's tour of the chessboard. Author: Michael H. Kay Date: 26 June 2003 This version modified to use XQuery 1.0, with sequences and functions. This query does not use a source document. There is an optional parameter, start, which can be set to any square on the chessboard, e.g. a3 or h5. XQuery does not allow parameters to be given a default value, so the parameter is mandatory. There is a second optional parameter, end, which indicates that the processing should stop after a given number of steps. This can be used to animate the display of the tour. This works especially well when the query is compiled into a Java servlet. The output is an HTML display of the completed tour. Internally, the following data representations are used: * A square on the chessboard: represented as a number in the range 0 to 63 * A state of the chessboard: a sequence of 64 integers, each containing a move number. A square that has not been visited yet is represented by a zero. * A set of possible moves: represented as a sequence of integers, * each integer representing the number of the destination square :) declare option saxon:default "'a1'"; declare variable $start as xs:string := 'a1'; declare option saxon:default "'64'"; declare variable $end as xs:string := '64'; declare variable $endd as xs:integer := xs:integer($end); declare variable $start-column as xs:integer := xs:integer(translate(substring($start, 1, 1), 'abcdefgh', '01234567')); declare variable $start-row as xs:integer := 8 - xs:integer(substring($start, 2, 1)); declare function tour:main () as element() { if (not(string-length($start)=2) or not(translate(substring($start,1,1), 'abcdefgh', 'aaaaaaaa')='a') or not(translate(substring($start,2,1), '12345678', '11111111')='1')) then error((), "Invalid start parameter: try say 'a1' or 'g6'") else if (not($endd = 1 to 64)) then error((), "Invalid end parameter: must be in range 1 to 64") else let $empty-board as xs:integer* := for $i in (1 to 64) return 0 let $initial-board as xs:integer* := tour:place-knight(1, $empty-board, $start-row * 8 + $start-column) let $final-board as xs:integer* := tour:make-moves(2, $initial-board, $start-row * 8 + $start-column) return tour:print-board($final-board) }; declare function tour:place-knight ( $move as xs:integer, $board as xs:integer*, $square as xs:integer ) as xs:integer* { (: This function places a knight on the board at a given square. The returned value is the supplied board, modified to indicate that the knight reached a given square at a given move :) for $i in 1 to 64 return if ($i = $square + 1) then $move else $board[$i] }; declare function tour:make-moves ( $move as xs:integer, $board as xs:integer*, $square as xs:integer ) as xs:integer* { (: This function takes the board in a given state, decides on the next move to make, and then calls itself recursively to make further moves, until the knight has completed his tour of the board. It returns the board in its final state. :) let $possible-move-list as xs:integer* := tour:list-possible-moves($board, $square) return tour:try-possible-moves($move, $board, $square, $possible-move-list) }; declare function tour:try-possible-moves ( $move as xs:integer, $board as xs:integer*, $square as xs:integer, $possible-moves as xs:integer* ) as xs:integer* { (: This function tries a set of possible moves that the knight can make from a given position. It determines the best move as the one to the square with fewest exits. If this is unsuccessful then it can backtrack and try another move; however this turns out rarely to be necessary. The function makes the selected move, and then calls make-moves() to make subsequent moves, returning the final state of the board. :) if (count($possible-moves)!=0) then tour:make-best-move($move, $board, $square, one-or-more($possible-moves)) else () (: if there is no possible move, we return the special value () as the final state of the board, to indicate to the caller that we got stuck :) }; declare function tour:make-best-move ( $move as xs:integer, $board as xs:integer*, $square as xs:integer, $possible-moves as xs:integer+ ) as xs:integer* { (: this function, given the state of the board and a set of possible moves, determines which of the moves is the best one. It then makes this move, and proceeds recursively to make further moves, eventually returning the final state of the board. :) let $best-move as xs:integer := tour:find-best-move($board, $possible-moves, 9, 999) let $other-possible-moves as xs:integer* := $possible-moves[. != $best-move] let $next-board as xs:integer* := tour:place-knight($move, $board, $best-move) let $final-board as xs:integer* := if ($move < $endd) then tour:make-moves($move+1, $next-board, $best-move) else $next-board (: if the final board has the special value '()', we got stuck, and have to choose the next best of the possible moves. This is done by a recursive call. I thought that the knight never did get stuck, but it does: if the starting square is f1, the wrong choice is made at move 58, and needs to be reversed. :) return if (empty($final-board)) then tour:try-possible-moves($move, $board, $square, $other-possible-moves) else $final-board }; declare function tour:find-best-move ( $board as xs:integer*, $possible-moves as xs:integer+, $fewest-exits as xs:integer, $best-so-far as xs:integer ) as xs:integer { (: This function finds from among the possible moves, the one with fewest exits. It calls itself recursively. :) let $trial-move as xs:integer := $possible-moves[1] let $other-possible-moves as xs:integer* := $possible-moves[position() > 1] let $trial-board as xs:integer* := tour:place-knight(99, $board, $trial-move) let $trial-move-exit-list as xs:integer* := tour:list-possible-moves($trial-board, $trial-move) let $number-of-exits as xs:integer := count($trial-move-exit-list) let $minimum-exits as xs:integer := min(($number-of-exits, $fewest-exits)) let $new-best-so-far as xs:integer := if ($number-of-exits < $fewest-exits) then $trial-move else $best-so-far (: if there are other possible moves, consider them too, using a recursive call. Otherwise return the best move found. :) return if (count($other-possible-moves)!=0) then tour:find-best-move($board, one-or-more($other-possible-moves), $minimum-exits, $new-best-so-far) else $new-best-so-far }; declare function tour:list-possible-moves ( $board as xs:integer*, $square as xs:integer ) as xs:integer* { (: This function, given the knight's position on the board, returns the set of squares he can move to. The squares will be ones that have not been visited before :) let $row as xs:integer := $square idiv 8 let $column as xs:integer := $square mod 8 return (if ($row > 1 and $column > 0 and $board[($square - 17) + 1]=0) then $square - 17 else (), if ($row > 1 and $column < 7 and $board[($square - 15) + 1]=0) then $square - 15 else (), if ($row > 0 and $column > 1 and $board[($square - 10) + 1]=0) then $square - 10 else (), if ($row > 0 and $column < 6 and $board[($square - 6) + 1]=0) then $square - 6 else (), if ($row < 6 and $column > 0 and $board[($square + 15) + 1]=0) then $square + 15 else (), if ($row < 6 and $column < 7 and $board[($square + 17) + 1]=0) then $square + 17 else (), if ($row < 7 and $column > 1 and $board[($square + 6) + 1]=0) then $square + 6 else (), if ($row < 7 and $column < 6 and $board[($square + 10) + 1]=0) then $square + 10 else () ) }; declare function tour:print-board ( $board as xs:integer* ) as element() { <html> <head> <title>Knight's tour</title> </head> <body> <div align="center"> <h1>Knight's tour starting at {$start}</h1> <table border="1" cellpadding="4"> {for $row in 0 to 7 return <tr> {for $column in 0 to 7 let $color := if ((($row + $column) mod 2)=1) then 'xffff44' else 'white' return <td align="center" bgcolor="{$color}" width="22">{ let $n := $board[$row * 8 + $column + 1] return if ($endd != 64 and $n = $endd) then <b>{$n}</b> else if ($n = 0) then " " else $n }</td> } </tr> } </table> <p>{ if ($endd != 64) then <a href="Tour?start={$start}&end={$endd+1}">Step</a> else () }</p> </div> </body> </html> }; tour:main() |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes090[+]
X Axes090: let $element as element(foo) := <foo/> return count($element/self::bar) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes091[+]
X Axes091: let $element as element(foo) := <foo/> return count($element/self::*:bar) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes092[+]
X Axes092: declare namespace ns1 = "http://www.example.org/ns1"; declare namespace ns2 = "http://www.example.org/ns2"; let $element as element(ns1:foo) := <ns1:foo/> return count($element/self::ns2:*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes093[+]
X Axes093: let $attribute as attribute(foo) := attribute foo { } return count($attribute/self::bar) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes094[+]
X Axes094: let $attribute as attribute(foo) := attribute foo { } return count($attribute/self::*:bar) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes095[+]
X Axes095: declare namespace ns1 = "http://www.example.org/ns1"; declare namespace ns2 = "http://www.example.org/ns2"; let $attribute as attribute(ns1:foo) := attribute ns1:foo { } return count($attribute/self::ns2:*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes096[+]
X Axes096: let $element as element(*) := <foo/> return count($element/self::bar) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes097[+]
X Axes097: let $element as element(*) := <foo/> return count($element/self::*:bar) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes098[+]
X Axes098: declare namespace ns1 = "http://www.example.org/ns1"; declare namespace ns2 = "http://www.example.org/ns2"; let $element as element(*) := <ns1:foo/> return count($element/self::ns2:*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes099[+]
X Axes099: let $attribute as attribute(*) := attribute foo { } return count($attribute/self::bar) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes100[+]
X Axes100: let $attribute as attribute(*) := attribute foo { } return count($attribute/self::*:bar) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes101[+]
X Axes101: declare namespace ns1 = "http://www.example.org/ns1"; declare namespace ns2 = "http://www.example.org/ns2"; let $attribute as attribute(*) := attribute ns1:foo { } return count($attribute/self::ns2:*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes102[+]
X Axes102: declare namespace ns1 = "http://www.example.org/ns1"; declare namespace ns2 = "http://www.example.org/ns2"; declare construction strip; let $element as element(*, xs:untyped) := <e>test</e> let $element as element(*, xs:untyped) := $element/self::* return count($element) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes103[+]
X Axes103: let $comment as comment() := <!--comment--> return count($comment/self::*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes104[+]
X Axes104: let $comment as comment() := <!--comment--> return count($comment/self::foo) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes105[+]
X Axes105: let $comment as comment() := <!--comment--> return count($comment/self::*:foo) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes106[+]
X Axes106: declare namespace ns1 = "http://www.example.org/ns1"; let $comment as comment() := <!--comment--> return count($comment/self::ns1:*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes107[+]
X Axes107: let $processing-instruction as processing-instruction() := <?processing instruction?> return count($processing-instruction/self::*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes108[+]
X Axes108: let $processing-instruction as processing-instruction() := <?processing instruction?> return count($processing-instruction/self::processing) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes109[+]
X Axes109: let $processing-instruction as processing-instruction() := <?processing instruction?> return count($processing-instruction/self::*:processing) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes110[+]
X Axes110: declare namespace ns1 = "http://www.example.org/ns1"; let $processing-instruction as processing-instruction() := <?processing instruction?> return count($processing-instruction/self::ns1:*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes111[+]
X Axes111: declare namespace ns1 = "http://www.example.org/ns1"; declare namespace ns2 = "http://www.example.org/ns2"; declare construction strip; let $element as element(*, xs:untyped) := <e a="value" /> let $attribute as attribute(*, xs:untypedAtomic)* := $element/attribute::* return count($attribute) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
Axes112[+]
X Axes112: /*/namespace-node() |
pass | wrongError
expected: XPST0003 actualCode: XPST0017 |
pass | n/a
notXP20 |
n/a
notXQ10 |
n/a
notXP30 |
pass | n/a | pass | pass | n/a | n/a | n/a | n/a
Dependency (type=spec, value=XQ30+, satisfied=true) was not met. |
wrongError
Expected error: XPST0003. Found error: ZXQP0002 |
|
Axes113[+]
X Axes113: /*/namespace-node() |
no result | n/a | no result | n/a
notXP20 |
n/a
notXQ10 |
pass | n/a
notXQ30 |
pass | n/a | n/a | n/a | n/a | n/a | n/a
Dependency (type=spec, value=XP30+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
n/a
Dependency (type=spec, value=XP30+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
|
Axes114[+]
X Axes114: /*/namespace::namespace-node() |
no result | n/a | no result | n/a
notXP20 |
n/a
notXQ10 |
pass | n/a
notXQ30 |
pass | n/a | n/a | n/a | n/a | n/a | n/a
Dependency (type=spec, value=XP30+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
n/a
Dependency (type=spec, value=XP30+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
|
Axes115[+]
X Axes115: /*/attribute::namespace-node() |
pass | wrongError
expected: XPST0005 actualCode: XPST0003 |
pass | n/a
notXP20 |
n/a
notXQ10 |
pass | pass | pass | pass | pass | n/a | n/a | n/a | n/a
Dependency (type=spec, value=XP30+ XQ30+, satisfied=true) was not met. |
pass | |
Axes116[+]
X Axes116: /*/namespace::*[self::namespace-node()] |
no result | n/a | no result | n/a
notXP20 |
n/a
notXQ10 |
pass | n/a
notXQ30 |
pass | n/a | n/a | n/a | n/a | n/a | n/a
Dependency (type=spec, value=XP30+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
n/a
Dependency (type=spec, value=XP30+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
|
Axes117[+]
X Axes117: namespace {"xsl"}{"http://www.w3.org/1999/XSL/Transform"} / self::namespace-node() |
pass | fail | pass | n/a
notXP20 |
n/a
notXQ10 |
n/a
notXP30 |
pass | n/a | pass | pass | n/a | n/a | n/a | n/a
Dependency (type=spec, value=XQ30+, satisfied=true) was not met. |
pass | |
Axes118[+]
X Axes118: /*/namespace::* |
no result | n/a | no result | pass | n/a
notXQ10 |
pass | n/a
notXQ30 |
pass | n/a | n/a | pass | n/a | n/a | n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
|
Axes119[+]
X Axes119: /*/namespace::*/.. |
no result | n/a | no result | pass | n/a
notXQ10 |
pass | n/a
notXQ30 |
pass | n/a | n/a | pass | n/a | n/a | n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
|
Axes120[+]
X Axes120: /*/namespace::*/name() |
no result | n/a | no result | pass | n/a
notXQ10 |
pass | n/a
notXQ30 |
pass | n/a | n/a | pass | n/a | n/a | n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
|
Axes121[+]
X Axes121: string(/*/namespace::xlink) |
no result | n/a | no result | pass | n/a
notXQ10 |
pass | n/a
notXQ30 |
pass | n/a | n/a | pass | n/a | n/a | n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
|
Axes122[+]
X Axes122: /*/namespace::xlink is /*/*[1]/namespace::xlink |
no result | n/a | no result | pass | n/a
notXQ10 |
pass | n/a
notXQ30 |
pass | n/a | n/a | pass | n/a | n/a | n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
|
Axes123[+]
X Axes123: /*/namespace::xlink is /*/namespace::*[. = 'http://www.w3.org/1999/xlink'] |
no result | n/a | no result | pass | n/a
notXQ10 |
pass | n/a
notXQ30 |
pass | n/a | n/a | pass | n/a | n/a | n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
|
Axes124[+]
X Axes124: /*/namespace::*[not(name())] |
no result | n/a | no result | pass | n/a
notXQ10 |
pass | n/a
notXQ30 |
pass | n/a | n/a | pass | n/a | n/a | n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
|
Axes125[+]
X Axes125: /*/*/namespace::*[not(name())] |
no result | n/a | no result | pass | n/a
notXQ10 |
pass | n/a
notXQ30 |
pass | n/a | n/a | pass | n/a | n/a | n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
|
Axes126[+]
X Axes126: /*/*/*/namespace::*[not(name())] |
no result | n/a | no result | pass | n/a
notXQ10 |
pass | n/a
notXQ30 |
pass | n/a | n/a | pass | n/a | n/a | n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
n/a
Dependency (type=spec, value=XP20+, satisfied=true) was not met. Dependency (type=feature, value=namespace-axis, satisfied=true) was not met. |
|
Axes127[+]
X Axes127: /*/namespace-node() |
pass | n/a | no result | n/a
notXP20 |
pass | n/a
notXP30 |
n/a
notXQ30 |
n/a | n/a | n/a | n/a | pass | pass | wrongError
Expected error: XPST0017. Found error: ZXQP0002 |
n/a
Dependency (type=spec, value=XQ10, satisfied=true) was not met. |
|
axis-err-1[+]
X axis-err-1: let $var := <anElement>Some content</anElement> return $var/20[child::text()] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-1[+]
X K2-Axes-1: declare variable $var := document{<e><f>f's value</f></e>}; $var/(/)/(/)//f |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-2[+]
X K2-Axes-2: declare variable $var := <e><f>f's value</f></e>; $var/(/)/(/)//f |
pass | fail | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-3[+]
X K2-Axes-3: declare variable $v := <a><b/><b/><b/></a>; deep-equal($v//45, (45, 45, 45, 45)) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-4[+]
X K2-Axes-4: declare variable $v := <a><b/><b/><b/></a>; $v//45 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-5[+]
X K2-Axes-5: *:(:hey:)ncname |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-6[+]
X K2-Axes-6: *(:hey:):ncname |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-7[+]
X K2-Axes-7: * :ncname |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-8[+]
X K2-Axes-8: *(:hey:):ncname |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-9[+]
X K2-Axes-9: ncname :* |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-10[+]
X K2-Axes-10: name(:hey:):* |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-11[+]
X K2-Axes-11: * :ncname |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-12[+]
X K2-Axes-12: ncname: * |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-13[+]
X K2-Axes-13: *(:hey:):ncname |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-14[+]
X K2-Axes-14: ncname:(:hey:)* |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-15[+]
X K2-Axes-15: *(:hey:):(:hey:) ncname |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-16[+]
X K2-Axes-16: *:(:hey:)ncname |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-17[+]
X K2-Axes-17: *: |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-18[+]
X K2-Axes-18: empty(text {"some text"}/..) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-19[+]
X K2-Axes-19: empty(processing-instruction theName {"some text"}/..) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-20[+]
X K2-Axes-20: empty(attribute theName {"some text"}/..) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-21[+]
X K2-Axes-21: empty(element theName {"some text"}/..) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-22[+]
X K2-Axes-22: empty(comment {"some text"}/..) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-23[+]
X K2-Axes-23: empty(<elem/>/..) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-24[+]
X K2-Axes-24: <e>some text</e>/text()/.. |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-25[+]
X K2-Axes-25: <e><b/></e>/b/.. |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-26[+]
X K2-Axes-26: <e attr="c"/>/@attr/.. |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-27[+]
X K2-Axes-27: <e><?name data?></e>/processing-instruction()/.. |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-28[+]
X K2-Axes-28: <e><!--data --></e>/comment()/.. |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-29[+]
X K2-Axes-29: preceding-or-ancestor::* |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-30[+]
X K2-Axes-30: empty(fn:root(<e/>)/..) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-31[+]
X K2-Axes-31: empty(<e/>/..) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-32[+]
X K2-Axes-32: declare variable $myVar := <e/>; empty(fn:root($myVar/(/)/..)) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-33[+]
X K2-Axes-33: declare variable $myVar := document { <e/>}; empty($myVar/(/)/..) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-34[+]
X K2-Axes-34: nametest// |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-35[+]
X K2-Axes-35: nametest/ |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-36[+]
X K2-Axes-36: declare variable $myVar := <e/>; $myVar/(/)/ |
pass | pass | no result | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-37[+]
X K2-Axes-37: parent::self() |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-38[+]
X K2-Axes-38: 123[..] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-39[+]
X K2-Axes-39: 1[element()] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-40[+]
X K2-Axes-40: (1, <e/>)[..] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-41[+]
X K2-Axes-41: (<e/>, 1)[..] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-42[+]
X K2-Axes-42: empty(<e/>[parent::node()]) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-43[+]
X K2-Axes-43: (1, 5 * /)[1] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-44[+]
X K2-Axes-44: (1, /)[1] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-45[+]
X K2-Axes-45: (/, 1)[2] |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-46[+]
X K2-Axes-46: // |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-47[+]
X K2-Axes-47: declare variable $myVar := <e/>; empty($myVar/descendant-or-self::text()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-48[+]
X K2-Axes-48: declare variable $myVar := <e/>; $myVar/(<a/>, <b/>, <?d ?>, <!-- e-->, attribute name {}, document {()})/3 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-49[+]
X K2-Axes-49: declare variable $myVar := <e/>; $myVar/(<a/>, <b/>, <?d ?>, <!-- e-->, attribute name {}, document {()})/number() |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-50[+]
X K2-Axes-50: 1/3 |
pass | fail | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-51[+]
X K2-Axes-51: string(<e/>)/3 |
pass | fail | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-52[+]
X K2-Axes-52: declare variable $myVar := <e/>; empty($myVar/preceding-sibling::comment()/a/b/c/1/@*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-53[+]
X K2-Axes-53: (1, 2, 3)[1]/(1, 2)[last()]/"a string" |
pass | fail | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-54[+]
X K2-Axes-54: namespace::* |
pass | pass | no result | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-55[+]
X K2-Axes-55: empty(()/@attr) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-56[+]
X K2-Axes-56: empty(()/name) |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-57[+]
X K2-Axes-57: declare variable $var := <a> <b/> <c/> <d/> </a>; ($var/*, $var/*)/. |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-58[+]
X K2-Axes-58: declare variable $var := <a> <b/> <c/> <d/> </a>; ($var/*, $var/*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-59[+]
X K2-Axes-59: declare variable $i := <root> <child/> <child/> <child> <child2> <child3> <leaf/> </child3> </child2> </child> </root>; 1, root($i)//leaf/child::node(), 1 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-60[+]
X K2-Axes-60: empty(<element attr="foo" attr2="foo"/>/*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-61[+]
X K2-Axes-61: empty(<element attr="foo" attr2="foo"/>/*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-62[+]
X K2-Axes-62: <e> <b attr="fo"/> <b/> </e>/descendant-or-self::node() |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-63[+]
X K2-Axes-63: 1, <b attr="fo"/>/child::node(), 1 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-64[+]
X K2-Axes-64: <e> <b/> <b a=""/> </e>/b |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-65[+]
X K2-Axes-65: <e> <b a=""/> <b/> </e>/b |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-66[+]
X K2-Axes-66: <e> <!-- comment --> <?PA ?>text<b/> <?PB ?> <b/> <?PC ?> </e>/child::node() |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-67[+]
X K2-Axes-67: 1, <e/>/descendant::node(), 1 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-68[+]
X K2-Axes-68: 1, <e/>/descendant-or-self::node(), 1 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-69[+]
X K2-Axes-69: 1, <e attr=""/>/descendant::node(), 1 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-70[+]
X K2-Axes-70: 1, <e attr=""/>/descendant-or-self::node(), 1 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-71[+]
X K2-Axes-71: empty(<e/>/descendant::node()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-72[+]
X K2-Axes-72: empty(<e/>/descendant-or-self::node()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-73[+]
X K2-Axes-73: empty(<e attr=""/>/descendant::node()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-74[+]
X K2-Axes-74: empty(<e attr=""/>/descendant-or-self::node()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-75[+]
X K2-Axes-75: <a> <b c=""/> <d/> </a>/descendant-or-self::node()[last()]/ancestor::* |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-76[+]
X K2-Axes-76: <a> <b c=""/> <d/> </a>/descendant-or-self::node()[last()] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-77[+]
X K2-Axes-77: preceeding::node() |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-78[+]
X K2-Axes-78: <a> <b c=""/> <d/> </a>//node()/../count(.) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-79[+]
X K2-Axes-79: count(<a> <b c=""/> <d/> </a>//node()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-80[+]
X K2-Axes-80: count(<a> <b c=""/> <d/> </a>/descendant-or-self::node()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-81[+]
X K2-Axes-81: <a> <b id="person0"> <c/> </b> </a>/*[attribute::id eq "person0"]/c |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-82[+]
X K2-Axes-82: <a> <b id="person0"> <c/> </b> </a>/*[@id eq "person0"]/c |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-83[+]
X K2-Axes-83: empty(<e/>/attribute::attribute()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-84[+]
X K2-Axes-84: <e/>/attribute::schema-attribute(foo) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-85[+]
X K2-Axes-85: <e/>/attribute::schema-attribute() |
pass | pass | no result | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-86[+]
X K2-Axes-86: declare variable $root as document-node() := . treat as document-node(); <empty> { (: attribute axis, and all other axes that inference can assert might produce attributes. These are placed first, so we don't raise XQTY0024. :) $root/foo/child::attribute(foo), $root//element()/self::attribute(), $root//text()/self::attribute(), $root/self::attribute(), $root/foo/descendant::attribute(foo), $root//processing-instruction()/self::attribute(), $root/attribute(foo), $root/attribute(), $root/attribute::attribute(), $root//parent::attribute(), $root//document-node()/self::attribute(), $root/@*, $root/*/@*[self::*], $root//comment()/descendant-or-self::attribute(), $root//processing-instruction()/descendant-or-self::attribute(), $root//text()/descendant-or-self::attribute(), $root//document-node()/descendant-or-self::attribute(), $root//parent::attribute(), $root//ancestor::attribute(), $root//ancestor-or-self::attribute(), $root/self::attribute(), $root//attribute()/child::node(), $root//attribute::text(), $root//attribute::comment(), $root//attribute::processing-instruction(), $root//attribute::document-node(), $root//attribute::document-node(element(foo)), $root//attribute()/self::text(), $root//attribute()/self::processing-instruction(), $root//attribute()/self::element(), $root//attribute()/self::document-node(), $root//attribute()/self::comment(), $root//*/attribute()//node(), $root//*/attribute()/descendant::node(), $root//attribute::element(), $root//comment()/child::node(), $root//processing-instruction()/child::node(), $root//text()/child::node(), $root//attribute()/descendant::node(), $root//comment()/descendant::node(), $root//text()/descendant::node(), $root//processing-instruction()/descendant::node(), $root//comment()/descendant-or-self::text(), $root//comment()/descendant-or-self::processing-instruction(), $root//comment()/descendant-or-self::element(), $root//comment()/descendant-or-self::document-node(), $root//processing-instruction()/descendant-or-self::text(), $root//processing-instruction()/descendant-or-self::comment(), $root//processing-instruction()/descendant-or-self::element(), $root//processing-instruction()/descendant-or-self::document-node(), $root//text()/descendant-or-self::processing-instruction(), $root//text()/descendant-or-self::comment(), $root//text()/descendant-or-self::element(), $root//text()/descendant-or-self::document-node(), $root//attribute()/descendant-or-self::processing-instruction(), $root//attribute()/descendant-or-self::text(), $root//attribute()/descendant-or-self::comment(), $root//attribute()/descendant-or-self::element(), $root//attribute()/descendant-or-self::document-node(), $root/.., $root//parent::comment(), $root//parent::processing-instruction(), $root//parent::text(), $root//ancestor::comment(), $root//ancestor::processing-instruction(), $root//ancestor::text(), $root/self::comment(), $root/self::processing-instruction(), $root/self::text(), $root/self::element(), $root//element()/self::text(), $root//element()/self::processing-instruction(), $root//element()/self::document-node(), $root//element()/self::comment(), $root//processing-instruction()/self::text(), $root//processing-instruction()/self::element(), $root//processing-instruction()/self::document-node(), $root//processing-instruction()/self::comment(), $root//text()/self::processing-instruction(), $root//text()/self::element(), $root//text()/self::document-node(), $root//text()/self::comment(), $root//document-node()/self::processing-instruction(), $root//document-node()/self::element(), $root//document-node()/self::text(), $root//document-node()/self::comment() } </empty>, exists($root//*/attribute()/descendant-or-self::node()) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | wrongError
'Assert-any-of' returned: 'assert-xml' returned: result '<root></root>' is different from the expected result '<root><empty></empty>true</root>' Expected error: XPST0005. Found error: ZXQP0002 |
wrongError
'Assert-any-of' returned: 'assert-xml' returned: result '<root></root>' is different from the expected result '<root><empty></empty>true</root>' Expected error: XPST0005. Found error: ZXQP0002 |
|
K2-Axes-87[+]
X K2-Axes-87: <result> { <e> <a>1</a> <b>2</b> </e>/(b, a)/. } </result> |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-88[+]
X K2-Axes-88: declare variable $i := <e> <a>1</a> <b>2</b> </e>; <result> { ($i/b, $i/a)/. } </result> |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-89[+]
X K2-Axes-89: declare default element namespace "http://typedecl"; <r> { <e attr="foo"/>/@attr } </r> |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-90[+]
X K2-Axes-90: prefix: |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-91[+]
X K2-Axes-91: prefix: |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-92[+]
X K2-Axes-92: empty(<e/>/(gt gt gt)) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-93[+]
X K2-Axes-93: < asd /> |
pass | pass | no result | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-94[+]
X K2-Axes-94: declare |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-95[+]
X K2-Axes-95: eclare function |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-96[+]
X K2-Axes-96: declare function name |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-97[+]
X K2-Axes-97: declare function local:foo() external; |
pass | pass | no result | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-98[+]
X K2-Axes-98: xquery, version, encoding, default, declare, function, option, collation, schema, import |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
K2-Axes-99[+]
X K2-Axes-99: declare function foo() external; 1 |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-100[+]
X K2-Axes-100: empty(<a> <b/> <c/> </a>[self::b][last()]) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-101[+]
X K2-Axes-101: <b/>[self::b][last()] |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-102[+]
X K2-Axes-102: for $a in (/) return for $b in $a/child::site return for $c in $b/child::people return for $d in $c/child::person return if ((some $id in $d/attribute::id satisfies typeswitch ($id) case $n as node() return $id = "person0" default $d return ())) then $d/child::name else (), for $b in /site/people/person where $b/@id="person0" return $b/name, /site/people/person[@id eq "person0"]/name |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-103[+]
X K2-Axes-103: declare function local:isComplexType($typeID) { string($typeID) }; "|", //*/local:isComplexType(@type), "|" |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
K2-Axes-104[+]
X K2-Axes-104: <a/>/<b>{.}</b> |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
statictypingaxis-1[+]
X statictypingaxis-1: (10)/child::* |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
statictypingaxis-2[+]
X statictypingaxis-2: (10)/self::* |
pass | fail | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
statictypingaxis-3[+]
X statictypingaxis-3: (10)/attribute::* |
pass | fail | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
statictypingaxis-4[+]
X statictypingaxis-4: (10)/parent::* |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
statictypingaxis-5[+]
X statictypingaxis-5: (10)/descendant::* |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
statictypingaxis-6[+]
X statictypingaxis-6: (10)/descendant-or-self::* |
pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | |
cbcl-selfAxis-001[+]
X cbcl-selfAxis-001: <a> { <a b="blah"/>/@*/self::attribute(b) } </a> |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-childAxis-001[+]
X cbcl-childAxis-001: count(<a b="blah"/>/child::attribute(b)) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | wrongError
'Assert-any-of' returned: 'assert-eq' returned: result doesn't match expected result. Expected error: XPST0005. Found error: ZXQP0002 |
wrongError
'Assert-any-of' returned: 'assert-eq' returned: result doesn't match expected result. Expected error: XPST0005. Found error: ZXQP0002 |
|
cbcl-followingAxis-001[+]
X cbcl-followingAxis-001: count(<a><b/><b/></a>/b[1]/following-sibling::*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-precedingAxis-001[+]
X cbcl-precedingAxis-001: count(<a><b/><b/></a>/b[2]/preceding-sibling::*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-precedingAxis-002[+]
X cbcl-precedingAxis-002: count(<a><b/><b/></a>/b[2]/preceding-sibling::b) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-precedingAxis-003[+]
X cbcl-precedingAxis-003: count(<a><b/><b/></a>/b[1]/preceding-sibling::b) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-except-001[+]
X cbcl-except-001: let $x := <a><b/><c/><d/></a> return count(($x/(node() except b) | $x/(node() except b))) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-wild-001[+]
X cbcl-wild-001: declare namespace foo="test"; let $x := <a><foo:b/><c/><d/></a> return count($x/foo:* | $x/foo:*) |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-wild-002[+]
X cbcl-wild-002: declare namespace foo="http://localhost/"; <a><foo:b/><foo:c/></a>/foo:b/self::foo:* |
pass | pass | pass | n/a
notXP20 |
pass | n/a
notXP30 |
pass | n/a | pass | pass | n/a | pass | pass | pass | pass | |
cbcl-path-nodes-and-atomics[+]
X cbcl-path-nodes-and-atomics: declare function local:f($x) { if ($x mod 2 = 1) then <a/> else "a" }; let $y := for $x in (1 to 10) return <e>{$x}</e> return $y/local:f(.)/a |
fail | wrongError
expected: XPTY0019 actualCode: XPTY0018 |
wrongError
Expected error:XPTY0019, got err:XPTY0018 |
n/a
notXP20 |
wrongError
Expected error:XPTY0019, got err:XPTY0018 |
n/a
notXP30 |
wrongError
Expected error:XPTY0019, got err:XPTY0018 |
n/a | pass | pass | n/a | pass | pass | wrongError
Expected error: XPTY0019. Found error: XPTY0020 |
wrongError
Expected error: XPTY0019. Found error: XPTY0020 |