XQuery Test Suite Result Summary

This document contains the results of running the XML Query Test Suite on one or more implementaions of XQuery and XQueryX.

The latest version of this test suite is XQTS 1.0.2 dev. Implementations that have used older versions of the test suite are noted.

When results are listed as number/number/number, then indicate passed/failed/total. Passed and failed together may not equal total, due to tests not run or not reported.

The latest version of our files is available at http://dev.w3.org/cvsweb/2006/xquery-test-suite/. The "catalog" and "query" links found with each test case are links to this version.

XQuery

XQueryX

Featurexq2xslxq2xslSummary
Minimal Conformance 14588 / 49 / 14637  14275 / 85 / 14637 0/2
Optional Features
    Schema Import Feature 0 / 0 / 174  0 / 0 / 174 0/2
    Schema Validation Feature 0 / 0 / 25  0 / 0 / 25 0/2
    Static Typing Feature 0 / 0 / 46  0 / 0 / 46 0/2
    Full Axis Feature 130 / 0 / 130  130 / 0 / 130 2/2
    Module Feature 30 / 2 / 32  29 / 2 / 32 0/2
    Trivial XML Embedding Feature 0 / 0 / 4  0 / 0 / 4 0/2


Contents


Implementations:

xq2xsl

Organization:David Carlisle
http://monet.nag.co.uk/xq2xml
Implementation:xq2xsl
Version:20061026

xq2xsl

Organization:David Carlisle
http://monet.nag.co.uk/xq2xml
Implementation:xq2xsl
Version:20061026

Test Run:

xq2xsl

Date:2006-10-26
Test Suite Version:1.0.2 dev
Syntax:XQuery
Transformation:

No transformations are made directly on the XQuery file, however after conversion to XSLT, the parameters corresponding to external $input-context variables are changed from having empty default definitions to having definition "doc(relative/path/to/input/fileas/specified/in/catalogue)".

Comparison:

XML: The result is not serialised. The expected result is parsed using doc() and compared using deep-equal(), if this fails, text nodes are normalized with normalize-space(), then deep-equal() is retried (Use of normalize-space is noted in the comment field in this case).

Fragment: The result is not serialised. The expected result is wrapped in an element node so it can be parsed by am XML parser, the child nodes of this element are then compared using deep-equal (and optionaly normalize-space, as for the XML comparision).

Text: is treated as a synonym for the Fragment comparison

Inspect: If these have been looked at, they are declared pass, otherwise declared not tested.

Errors are currently NOT compared. If (any) error is expected, (any) error raised is considered to be a test pass. (Due to limitations of the test harness: This should be fixed in time for a future version of the test suite.)

Other Comments:

The xq2xsl transformation process is designed to only require a basic XSLT2 engine however the generated XSLT code may require a schema-aware XSLT engine to process some constructs. This test uses the same XSLT engine to transform the Query to XSLT and to execute the generated XSLT. The system used was SAXON 8.8 from Saxonica, for which the value of xsl:is-schema-aware is no.

xq2xsl

Date:2006-10-26
Test Suite Version:1.0.2 dev
Syntax:XQueryX
Transformation:

This is a trivial xqueryx implementation, simply prepending a call to the normative xqueryx stylesheet onto the test harness used by the xq2xsl XQuery implementation.

Comparison:

XML: The result is not serialised. The expected result is parsed using doc() and compared using deep-equal(), if this fails, text nodes are normalized with normalize-space(), then deep-equal() is retried (Use of normalize-space is noted in the comment field in this case).

Fragment: The result is not serialised. The expected result is wrapped in an element node so it can be parsed by am XML parser, the child nodes of this element are then compared using deep-equal (and optionaly normalize-space, as for the XML comparision).

Text: is treated as a synonym for the Fragment comparison

Inspect: If these have been looked at, they are declared pass, otherwise declared not tested.

Errors are currently NOT compared. If (any) error is expected, (any) error raised is considered to be a test pass. (Due to limitations of the test harness: This should be fixed in time for a future version of the test suite.)

Other Comments:

The xq2xsl transformation process is designed to only require a basic XSLT2 engine however the generated XSLT code may require a schema-aware XSLT engine to process some constructs. This test uses the same XSLT engine to transform the Query to XSLT and to execute the generated XSLT. The system used was SAXON 8.8 from Saxonica, for which the value of xsl:is-schema-aware is no.

Features:

Minimal Conformance
xq2xsl:   not specified
xq2xsl:   not specified

Schema Import
xq2xsl:   false
xq2xsl:   false

Schema Validation
xq2xsl:   false
xq2xsl:   false

Static Typing
xq2xsl:   no
xq2xsl:   no

Static Typing Extensions
xq2xsl:   false
xq2xsl:   false

Full Axis
xq2xsl:   true
xq2xsl:   true

Module
xq2xsl:   true
xq2xsl:   true

Serialization
xq2xsl:   true
xq2xsl:   true

Trivial XML Embedding
xq2xsl:   not specified
xq2xsl:   not specified

Implementation-defined Items:

[XQuery] The version of Unicode that is used to construct expressions.
xq2xsl:   As used by Test Applet
xq2xsl:   As used by Test Applet

[XQuery] The statically-known collations.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[XQuery] The implicit timezone.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[XQuery] The circumstances in which warnings are raised, and the ways in which warnings are handled.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[XQuery] The method by which errors are reported to the external processing environment.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[XQuery] Whether the implementation is based on the rules of [XML 1.0] and [XML Names] or the rules of [XML 1.1] and [XML Names 1.1]. One of these sets of rules must be applied consistently by all aspects of the implementation.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[XQuery] Any components of the static context or dynamic context that are overwritten or augmented by the implementation.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[XQuery] Which of the optional axes are supported by the implementation, if the Full-Axis Feature is not supported.
xq2xsl:   all
xq2xsl:   all

[XQuery] The default handling of empty sequences returned by an ordering key (sortspec) in an order by clause (empty least or empty greatest).
xq2xsl:   empty first
xq2xsl:   empty first

[XQuery] The names and semantics of any extension expressions (pragmas) recognized by the implementation.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[XQuery] The names and semantics of any option declarations recognized by the implementation.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[XQuery] Protocols (if any) by which parameters can be passed to an external function, and the result of the function can returned to the invoking query.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[XQuery] The process by which the specific modules to be imported by a module import are identified, if the Module Feature is supported (includes processing of location hints, if any.)
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[XQuery] Any static typing extensions supported by the implementation, if the Static Typing Feature is supported.
xq2xsl:   none
xq2xsl:   none

[XQuery] The means by which serialization is invoked, if the Serialization Feature is supported.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[XQuery] The default values for the byte-order-mark, encoding, media-type, normalization-form, omit-xml-declaration, standalone, and version parameters, if the Serialization Feature is supported.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[XQuery] The result of an unsuccessful call to an external function (for example, if the function implementation cannot be found or does not return a value of the declared type).
xq2xsl:   not specified
xq2xsl:   not specified

[XQuery] Limits on ranges of values for various data types, as enumerated in 5.3 Data Model Conformance.
xq2xsl:   not specified
xq2xsl:   not specified

[FuncOps] The destination of the trace output is implementation-defined. See 4 The Trace Function.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[FuncOps] For xs:integer operations, implementations that support limited-precision integer operations must either raise an error [err:FOAR0002] or provide an implementation-defined mechanism that allows users to choose between raising an error and returning a result that is modulo the largest representable integer value. See 6.2 Operators on Numeric Values.
xq2xsl:   not specified
xq2xsl:   not specified

[FuncOps] For xs:decimal values the number of digits of precision returned by the numeric operators is implementation-defined. See 6.2 Operators on Numeric Values. See also 17.1.3.3 Casting to xs:decimal and 17.1.3.4 Casting to xs:integer.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[FuncOps] If the number of digits in the result exceeds the number of digits that the implementation supports, the result is truncated or rounded in an implementation-defined manner. See 6.2 Operators on Numeric Values. See also 17.1.3.3 Casting to xs:decimal and 17.1.3.4 Casting to xs:integer.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[FuncOps] It is implementation-defined which version of Unicode is supported by the features defined in this specification, but it is recommended that the most recent version of Unicode be used. See 7.1 String Types.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[FuncOps] For 7.4.6 fn:normalize-unicode, conforming implementations must support normalization form "NFC" and may support normalization forms "NFD", "NFKC", "NFKD", "FULLY-NORMALIZED". They may also support other normalization forms with implementation-defined semantics.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[FuncOps] The ability to decompose strings into collation units suitable for substring matching is an implementation-defined property of a collation. See 7.5 Functions Based on Substring Matching.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[FuncOps] All minimally conforming processors must support year values with a minimum of 4 digits (i.e., YYYY) and a minimum fractional second precision of 1 millisecond or three digits (i.e., s.sss). However, conforming processors may set larger implementation-defined limits on the maximum number of digits they support in these two situations. See 10.1.1 Limits and Precision.
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[FuncOps] The result of casting a string to xs:decimal, when the resulting value is not too large or too small but nevertheless has too many decimal digits to be accurately represented, is implementation-defined. See 17.1.1 Casting from xs:string and xs:untypedAtomic.
xq2xsl:   not specified
xq2xsl:   not specified

[FuncOps] Various aspects of the processing provided by 15.5.4 fn:doc are implementation-defined. Implementations may provide external configuration options that allow any aspect of the processing to be controlled by the user.
xq2xsl:   not specified
xq2xsl:   not specified

[FuncOps] The manner in which implementations provide options to weaken the stable characteristic of 15.5.6 fn:collection and 15.5.4 fn:doc are implementation-defined.
xq2xsl:   not specified
xq2xsl:   not specified

[DataModel] Support for additional user-defined or implementation-defined types is implementation-defined. (See 2.6.1 Representation of Types)
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[DataModel] Some typed values in the data model are undefined. Attempting to access an undefined property is always an error. Behavior in these cases is implementation-defined and the host language is responsible for determining the result. (See 5 Accessors)
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[Serialization] For any implementation-defined output method, it is implementation-defined whether sequence normalization process takes place. (See 2 Sequence Normalization)
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[Serialization] If the namespace URI is non-null for the method serialization parameter, then the parameter specifies an implementation-defined output method. (See 3 Serialization Parameters)
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[Serialization] If the value of the normalization-form form parameter is not NFC, NFD, NFKC, NFKD, fully-normalized, or none then the meaning of the value and it's effect is implementation-defined. (See 4 Phases of Serialization)
xq2xsl:   not specified
xq2xsl:   not specified

[Serialization] The effect of additional serialization parameters on the output of the serializer, where the name of such a parameter must be namespace-qualified, is implementation-defined or implementation-dependent. The extent of this effect on the output must not override the provisions of this specification. (See 3 Serialization Parameters)
xq2xsl:   not specified
xq2xsl:   not specified

[Serialization] The effect of providing an option that allows the encoding phase to be skipped, so that the result of serialization is a stream of Unicode characters, is implementation-defined. The serializer is not required to support such an option. (See 4 Phases of Serialization)
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

[Serialization] An serializer may provide an implementation-defined mechanism to place CDATA sections in the result tree. (See 5.1.4 XML Output Method: the cdata-section-elements Parameter)
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

Static Context Properties:

Statically known namespaces
xq2xsl:   predefined XQuery ones plus 'xsl' bound to the xslt namespace.
xq2xsl:   predefined XQuery ones plus 'xsl' bound to the xslt namespace.

Default element/type namespace
xq2xsl:   null
xq2xsl:   null

Default function namespace
xq2xsl:   
xq2xsl:   

In-scope schema types
xq2xsl:   none
xq2xsl:   none

In-scope element declarations
xq2xsl:   none
xq2xsl:   none

In-scope attribute declarations
xq2xsl:   none
xq2xsl:   none

In-scope variables
xq2xsl:   none
xq2xsl:   none

Context item static type
xq2xsl:   xs:integer
xq2xsl:   xs:integer

Function signatures
xq2xsl:   XSLT
xq2xsl:   XSLT

Statically known collations
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

Default collation
xq2xsl:   Unicode codepoint
xq2xsl:   Unicode codepoint

Construction mode
xq2xsl:   
xq2xsl:   

Ordering mode
xq2xsl:   ordered
xq2xsl:   ordered

Default order for empty sequences
xq2xsl:   empty first
xq2xsl:   empty first

Boundary-space policy
xq2xsl:   strip
xq2xsl:   strip

Copy-namespaces mode
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

Base URI
xq2xsl:   
xq2xsl:   

Statically known documents
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

Statically known collections
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

Statically known default collection type
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

Dynamic Context Properties:

Context item
xq2xsl:   1
xq2xsl:   1

Context position
xq2xsl:   1
xq2xsl:   1

Context size
xq2xsl:   1
xq2xsl:   1

Variable values
xq2xsl:   
xq2xsl:   

Function implementations
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

Current dateTime
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

Implicit timezone
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

Available documents
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

Available collections
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

Default collection
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica
xq2xsl:   Depends on underlying XSLT engine, in this case: SAXON 8.8 from Saxonica

Summarized Results:

XQuery

XQueryX

Featurexq2xslxq2xslSummary
Minimal Conformance
    Optional Feature Errors
        Single error code for extra features18/1814/181/2
    XQuery Basics
        Static Context Evaluation1/11/12/2
        Query Types
            XQuery Sequence Type Syntax21/2121/212/2
    XQuery Expressions
        Primary Expressions
            Literals119/11970/1191/2
            Parenthesized Expressions20/2020/202/2
            Context Item Expressions
                External Context Item Expressions24/2424/242/2
                Internal Context Item Expressions21/2121/212/2
            Function Calls28/2823/281/2
        Path Expressions
            General Path Expression Tests1/11/12/2
            Steps
                Axes186/186184/1861/2
                Node Tests
                    NodeTest24/2424/242/2
                    NameTest37/3722/371/2
            Predicates44/4444/442/2
            Unabbreviated Syntax26/2626/262/2
            Abbreviated Syntax21/2121/212/2
        Sequence Expressions
            Constructing Sequences
                Comma Operator54/5454/542/2
                Range Expression65/6565/652/2
            Filter Expressions116/116111/1161/2
            Combining Node Sequences20/2020/202/2
        Operators
            Arithmetic Operators
                Arithmetic Operators on Numeric Values
                    op:numeric-add137/137137/1372/2
                    op:numeric-subtract107/107107/1072/2
                    op:numeric-multiply79/7976/791/2
                    op:numeric-divide105/105102/1051/2
                    op:numeric-integer-divide109/109106/1091/2
                    op:numeric-mod58/5855/581/2
                    op:numeric-unary-plus51/5151/512/2
                    op:numeric-unary-minus52/5252/522/2
                Arithmetic Operators on Duration Values
                    op:add-yearMonthDurations24/2424/242/2
                    op:subtract-yearMonthDurations30/3030/302/2
                    op:multiply-yearMonthDuration37/3737/372/2
                    op:divide-yearMonthDuration27/2727/272/2
                    op:divide-yearMonthDuration-by-yearMonthDuration22/2222/222/2
                    op:add-dayTimeDurations24/2424/242/2
                    op:subtract-dayTimeDurations30/3030/302/2
                    op:multiply-dayTimeDuration32/3232/322/2
                    op:divide-dayTimeDuration36/3636/362/2
                    op:divide-dayTimeDuration-by-dayTimeDuration22/2222/222/2
                Arithmetic Operators on Duration and Date Time Values
                    op:subtract-dateTimes-yielding-dayTimeDuration26/2626/262/2
                    op:subtract-dates-yielding-dayTimeDuration26/2626/262/2
                    op:subtract-times29/2929/292/2
                    op:add-yearMonthDuration-to-dateTime26/2626/262/2
                    op:add-dayTimeDuration-to-dateTime24/2424/242/2
                    op:subtract-yearMonthDuration-from-dateTime21/2121/212/2
                    op:subtract-dayTimeDuration-from-dateTime20/2020/202/2
                    op:add-yearMonthDuration-to-date24/2424/242/2
                    op:add-dayTimeDuration-to-date22/2222/222/2
                    op:subtract-yearMonthDuration-from-date23/2323/232/2
                    op:subtract-dayTimeDuration-from-date21/2121/212/2
                    op:add-dayTimeDuration-to-time24/2424/242/2
                    op:subtract-dayTimeDuration-from-time26/2626/262/2
            Comparison Operators
                Value Comparison
                    Comparison of Numeric Values
                        op:numeric-equal178/178177/1781/2
                        op:numeric-less-than152/152152/1522/2
                        op:numeric-greater-than88/8888/882/2
                    Comparison Operators on Boolean Values
                        op:boolean-equal49/4949/492/2
                        op:boolean-less-than39/3939/392/2
                        op:boolean-greater-than39/3939/392/2
                    Comparisons of Duration, Date Time Values
                        op:yearMonthDuration-less-than28/2828/282/2
                        op:yearMonthDuration-greater-than28/2828/282/2
                        op:dayTimeDuration-less-than28/2828/282/2
                        op:dayTimeDuration-greater-than28/2828/282/2
                        op:duration equal129/129129/1292/2
                        op:dateTime-equal52/5252/522/2
                        op:dateTime-less-than28/2828/282/2
                        op:dateTime-greater-than28/2828/282/2
                        op:date-equal28/2828/282/2
                        op:date-less-than30/3030/302/2
                        op:date-greater-than30/3030/302/2
                        op:time-equal40/4040/402/2
                        op:time-less-than30/3030/302/2
                        op:time-greater-than30/3030/302/2
                        op:gYearMonth-equal32/3232/322/2
                        op:gYear-equal32/3231/321/2
                        op:gMonthDay-equal31/3131/312/2
                        op:gMonth-equal31/3131/312/2
                        op:gDay-equal31/3131/312/2
                        op:yearMonthDuration-equal7/77/72/2
                        op:dayTimeDuration-equal8/88/82/2
                    Comparison Operators on QName Values
                        op:QName-equal36/3636/362/2
                        fn:prefix-from-QName24/2424/242/2
                    Comparison Operators on base64Binary and hexBinary Types
                        op:hexBinary-equal29/2929/292/2
                        op:base64Binary-equal27/2727/272/2
                    Comparison Operators on NOTATION Types
                        op:NOTATION-equal
                    Type Checking and Error Handling42/4242/422/2
                    Comparison of String Values
                        xs:string eq/ne xs:string5/55/52/2
                        xs:string gt/ge xs:string5/55/52/2
                        xs:string lt/le xs:string5/55/52/2
                    Comparison of AnyURI Values
                        xs:anyURI eq/ne xs:anyURI14/1414/142/2
                General Comparisons
                    The "=" operator for general comparisons158/158157/1581/2
                    The "!=" operator for general comparisons140/140139/1401/2
                    The "< (less than)" operator for general comparisons119/119118/1191/2
                    The "<= (less than or equal)" operator for general comparisons108/108108/1082/2
                    The "> (greater than)" operator for general comparisons118/118118/1182/2
                    The ">= (greater than or equal)" operator for general comparisons110/110109/1101/2
                Node Comparisons
                    op:is-same-node28/2827/281/2
                    op:node-before33/3326/331/2
                    op:node-after33/3326/331/2
            Operators on Sequences
                op:union23/2323/232/2
                op:intersect23/2323/232/2
                op:except23/2323/232/2
        Logical Expressions364/364364/3642/2
        Constructors
            Direct Element Constructors226/232204/2320/2
                Attributes50/5136/510/2
                Namespace Declaration Attributes28/2927/290/2
                Content80/8275/820/2
                White Space Element Content57/5757/572/2
            Other Direct Constructors20/2012/201/2
            Computed Constructors
                Computed Element Constructors51/5151/512/2
                Computed Attribute Constructors33/3333/332/2
                Document Node Constructors24/2424/242/2
                Text Node Constructors20/2020/202/2
                Computed Processing-instruction Constructors41/4140/411/2
                Computed Comment Constructors21/2121/212/2
            In-scope Namespaces of a Constructed Element20/2020/202/2
        Tests of For-Let-Where-OrderBy-Return Expressions
            FOR Clause
                FOR Clause without TypeDeclaration87/8776/871/2
                FOR Clause with TypeDeclaration55/5551/551/2
                FOR Clause with a Positional Variable30/3029/301/2
            LET Clause
                LET Clause without TypeDeclaration27/2725/271/2
                LET Clause with TypeDeclaration24/2424/242/2
            WHERE Clause40/4037/401/2
            ORDER BY Clause
                ORDER BY Clause with OrderModifier106/106106/1062/2
                ORDER BY Clause without OrderModifier40/4040/402/2
            RETURN Clause20/2017/201/2
        Ordered and Unordered Expressions26/2624/261/2
        Conditional Expressions32/3231/321/2
        Quantified Expressions
            Quantified Expressions Without TypeDeclaration158/158154/1581/2
            Quantified Expressions With TypeDeclaration30/3026/301/2
        Expressions on Sequence Types
            Instance Of174/176172/1760/2
            Typeswitch35/3625/360/2
            Cast from Derived types21/2121/212/2
            Cast from Derived types To Parents21/2121/212/2
            Casting within a branch of the type hierarchy21/2121/212/2
            Cast2207/22072199/22071/2
            Castable688/688677/6881/2
            Treat43/4342/431/2
        Modules and Prologs
            Version Declaration26/2721/270/2
            Boundary-space Declaration27/2724/271/2
            Default Collation Declaration7/74/71/2
            Copy Namespaces Declaration25/2723/270/2
            Base URI Declaration23/3019/300/2
            Construction Declaration24/2522/250/2
            Default Namespace Declaration35/3529/351/2
            Ordering Mode Declaration25/2523/251/2
            Empty Order Declaration32/3218/321/2
            Namespace Declaration34/3432/341/2
            Variable Declaration
                External Variable References without TypeDeclaration22/2322/230/2
                External Variable References with TypeDeclatation23/2423/240/2
                Internal Variable References without TypeDeclaration69/7669/760/2
                Internal Variable References with TypeDeclatation36/4433/440/2
            Function Declaration99/10089/1000/2
            Option Declaration Declaration8/87/81/2
        XQuery Comments38/4029/400/2
        Extension Expression49/5038/500/2
        Implicit Context
    Functions
        Accessor Functions
            fn:node-name27/2727/272/2
            fn:nilled26/2626/262/2
            fn:string48/4848/482/2
            fn:data43/4343/432/2
            fn:base-uri24/2524/250/2
            fn:static-base-uri16/1716/170/2
            fn:document-uri24/2424/242/2
        The Error Function59/5959/592/2
        The Trace Function27/2727/272/2
        Constructor Functions
            fn:dateTime44/4944/490/2
        Functions on Numeric Values
            fn:abs131/131131/1312/2
            fn:ceiling45/4545/452/2
            fn:floor45/4545/452/2
            fn:round48/4848/482/2
            fn:round-half-to-even52/5252/522/2
        Functions on Strings
            Functions to Assemble and Disassemble Strings
                fn:codepoints-to-string46/4646/462/2
                fn:string-to-codepoints43/4338/431/2
            Equality and Comparison of Strings
                fn:compare42/4242/422/2
                fn:codepoint-equal21/2121/212/2
            Functions on String Values
                fn:concat91/9191/912/2
                fn:string-join33/3333/332/2
                fn:substring36/3636/362/2
                fn:string-length29/2929/292/2
                fn:normalize-space35/3535/352/2
                fn:normalize-unicode34/3434/342/2
                fn:upper-case24/2424/242/2
                fn:lower-case24/2424/242/2
                fn:translate34/3434/342/2
                surrogate values for various string functions.15/150/151/2
                fn:encode-for-uri29/2927/291/2
                fn:iri-to-uri36/3635/361/2
                fn:escape-html-uri33/3331/331/2
            Functions Based on Substring Matching
                fn:contains32/3232/322/2
                fn:starts-with32/3232/322/2
                fn:ends-with31/3131/312/2
                fn:substring-before31/3131/312/2
                fn:substring-after32/3232/322/2
            String Functions that Use Pattern Matching
                fn:matches55/5555/552/2
                fn:replace52/5252/522/2
                fn:tokenize39/3939/392/2
        Functions for anyURI
            fn:resolve-uri29/2929/292/2
        Functions on Boolean Values
            fn:true24/2424/242/2
            fn:false24/2424/242/2
            fn:not70/7070/702/2
        Functions on Durations, Dates and Times
            Component Extraction Functions on Durations, Dates and Times
                fn:years-from-duration30/3030/302/2
                fn:months-from-duration30/3030/302/2
                fn:days-from-duration30/3030/302/2
                fn:hours-from-duration30/3030/302/2
                fn:minutes-from-duration31/3131/312/2
                fn:seconds-from-duration31/3131/312/2
                fn:year-from-dateTime27/2727/272/2
                fn:month-from-dateTime27/2727/272/2
                fn:day-from-dateTime27/2727/272/2
                fn:hours-from-dateTime27/2727/272/2
                fn:minutes-from-dateTime27/2727/272/2
                fn:seconds-from-dateTime26/2726/270/2
                fn:timezone-from-dateTime27/2727/272/2
                fn:year-from-date27/2727/272/2
                fn:month-from-date27/2727/272/2
                fn:day-from-date27/2727/272/2
                fn:timezone-from-date27/2727/272/2
                fn:hours-from-time27/2727/272/2
                fn:minutes-from-time27/2727/272/2
                fn:seconds-from-time27/2727/272/2
                fn:timezone-from-time27/2727/272/2
            Timezone Adjustment on Dates and Time Values
                fn:adjust-dateTime-to-timezone42/4242/422/2
                fn:adjust-date-to-timezone36/3636/362/2
                fn:adjust-time-to-timezone39/3939/392/2
        Functions Related to QNames
            Additional Constructor Functions for QNames
                fn:resolve-QName26/2626/262/2
                fn:QName32/3232/322/2
            fn:local-name-from-QName24/2424/242/2
            fn:namespace-uri-from-QName26/2626/262/2
            fn:namespace-uri-for-prefix23/2323/232/2
            fn:in-scope-prefixes22/2222/222/2
        Functions on Nodes
            fn:name26/2626/262/2
            fn:local-name26/2626/262/2
            fn:namespace-uri29/2929/292/2
            fn:number60/6060/602/2
            fn:lang29/2929/292/2
            fn:root28/2828/282/2
        Functions on Sequences
            General Functions and Operators on Sequences
                fn:boolean122/122122/1222/2
                fn:index-of47/4747/472/2
                fn:empty48/4848/482/2
                fn:exists53/5353/532/2
                fn:distinct-values86/8686/862/2
                fn:insert-before41/4141/412/2
                fn:remove44/4444/442/2
                fn:reverse60/6060/602/2
                fn:subsequence67/6767/672/2
                fn:unordered31/3131/312/2
            Functions That Test the Cardinality of Sequences
                fn:zero-or-one48/4848/482/2
                fn:one-or-more48/4848/482/2
                fn:exactly-one50/5050/502/2
            fn:deep-equal156/156156/1562/2
            Aggregate Functions
                fn:count57/5757/572/2
                fn:avg215/215215/2152/2
                fn:max172/172172/1722/2
                fn:min172/172172/1722/2
                fn:sum198/198198/1982/2
            Functions that Generate Sequences
                fn:id26/2626/262/2
                fn:idref26/2626/262/2
                fn:doc-available2/22/22/2
                fn:doc15/1515/152/2
                fn:collection13/1313/132/2
        Context Functions
            fn:position65/6565/652/2
            fn:last51/5151/512/2
            fn:current-dateTime26/2626/262/2
            fn:current-date23/2323/232/2
            fn:current-time22/2222/222/2
            fn:default-collation5/55/52/2
            fn:implicit-timezone26/2626/262/2
Optional Features
    Schema Import Feature
        FLWOR Expressions that requires a schema import0/170/170/2
        Computed Element Constructors0/40/40/2
        Version Declaration0/20/20/2
        Misc Functions that depends entirely on schema validation.0/370/370/2
        Cast0/480/480/2
        op:numeric-equal0/20/20/2
        op:NOTATION-equal0/220/220/2
        Constructor Functions for User Defined Functions0/100/100/2
        Schema Import0/310/310/2
        FOR Clause with TypeDeclaration0/10/10/2
    Schema Validation Feature
        Validate Expression0/250/250/2
    Static Typing Feature
        Static Typing of Path Expressions
            Static Typing of Steps Expressions
                Static Typing of Axes Steps0/210/210/2