<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.w3.org/Bugs/Public/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4"
          urlbase="https://www.w3.org/Bugs/Public/"
          
          maintainer="sysbot+bugzilla@w3.org"
>

    <bug>
          <bug_id>7177</bug_id>
          
          <creation_ts>2009-07-30 13:59:38 +0000</creation_ts>
          <short_desc>CVS: is-XPath2 in catalog</short_desc>
          <delta_ts>2011-06-14 13:47:15 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>XML Query Test Suite</product>
          <component>XML Query Test Suite</component>
          <version>unspecified</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows NT</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Mills">tim</reporter>
          <assigned_to name="Oliver Hallam">oliver</assigned_to>
          <cc>oliver</cc>
          
          <qa_contact name="Mailing list for public feedback on specs from XSL and XML Query WGs">public-qt-comments</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>26143</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Mills">tim</who>
    <bug_when>2009-07-30 13:59:38 +0000</bug_when>
    <thetext>I have been trying to run those tests marked as is-XPath2 = &apos;true&apos; in the
XQTS catalog with an XPath 2.0 processor.  Before parsing, I remove variable declarations (and other XQuery prolog statements) between insert-start and insert-end comments.

Unforunately the is-XPath2 flag does not always appear to be correct.  There are
4859 tests marked as is-XPath2 = &apos;false&apos; which appear to give the same results as if they were run with an XQuery 1.0 processor.  There are also 694 tests which are marked as is-XPath2 = &apos;true&apos; which don&apos;t give the same result, details of which are given below.

Using an XPath 2.0 processor, the following queries give a result different from that given by an XQuery 1.0 processor due to the differences in the StringLiteral grammar between the two languages.

Literals056
Literals057
Literals058 
Literals059
Literals060 
fn-normalize-unicode1args-3
fn-normalize-unicode1args-4
fn-normalize-unicode1args-5
fn-normalize-unicode1args-6
fn-normalize-unicode-1
fn-translate3args-2
surrogates01
surrogates02
surrogates03
surrogates06
surrogates07
surrogates10
surrogates12
surrogates13
surrogates14
surrogates15
fn-iri-to-uri-18
fn-escape-html-uri-20
fn-escape-html-uri-21
fn-matches-27
fn-matches-28
caselessmatch06
caselessmatch07

The following queries give a different error code because XPath 2.0 does not require explicit declaration of variables.

ReturnExpr014 - wrong result for XPath 2.0 (XPDY0002)
ForExpr009 - wrong result for XPath 2.0 (XPDY0002)

The following queries give XPST0081 (undefined namespace prefix).

fn-union-node-args-015
fn-union-node-args-016
fn-union-node-args-017
fn-union-node-args-018
fn-union-node-args-019
fn-union-node-args-020
fn-union-node-args-021
fn-union-node-args-022
fn-intersect-node-args-015
fn-intersect-node-args-016
fn-intersect-node-args-017
fn-intersect-node-args-018
fn-intersect-node-args-019
fn-intersect-node-args-020
fn-intersect-node-args-021
fn-intersect-node-args-022
fn-except-node-args-015
fn-except-node-args-016
fn-except-node-args-017
fn-except-node-args-018
fn-except-node-args-019
fn-except-node-args-020
fn-except-node-args-021
fn-id-5
fn-id-6
fn-id-7
fn-id-8
fn-id-9
fn-id-10
fn-id-11
fn-id-12
fn-id-13
fn-id-14
fn-id-15
fn-id-16
fn-id-17
fn-id-18
fn-id-19
fn-id-20
fn-id-21
fn-data-1
notation-cast-3
casthcds1
casthcds2
casthcds3
casthcds4
casthcds5
casthcds6
casthcds7
casthcds8
casthcds9
casthcds10
casthcds11
casthcds12
casthcds13
casthcds14
casthcds15
casthcds16
casthcds17
casthcds18
casthcds19
casthcds20
casthcds21
casthcds22
casthcds23
casthcds24
casthcds25
casthcds26
casthcds27
casthcds28
casthcds29
casthcds30
casthcds31
casthcds32
casthcds33
casthcds34
casthcds35
casthcds36
casthcds37
casthcds38
casthcds39
casthcds40
casthcds41
casthcds42
value-comparison-3
value-comparison-4
user-defined-5
user-defined-6
user-defined-7
user-defined-8
user-defined-9
user-defined-10

The following queries give XPTY0019 because the implicitly defined variables have type item()* rather than node()* (following the stripping of the XQuery prolog).

ST-Axes001
ST-Axes002
ST-Axes003
ST-Axes004
ST-Axes005
ST-Axes006
ST-Axes007
ST-Axes008
ST-Axes009
ST-Axes010
ST-Axes011
ST-Axes012
ST-Axes013
ST-Axes014
ST-Axes015

The following queries give XPST0003 (syntax error).  Causes include use of node constructors, let expressions, validate expressions and prolog declarations.

Literals005
Literals066
Literals068
Literals069
Parenexpr-15
Parenexpr-16
Parenexpr-20
externalcontextitem-1
internalcontextitem-1
Axes085
Axes086
Axes087
Axes089
axis-err-1
NodeTest006
NodeTest007-1
NodeTest007-2
NodeTest008-1
NodeTest008-2
NodeTest009-1
NodeTest009-2
NodeTest010-1
NodeTest010-2
NodeTest011-1
NodeTest011-2
NodeTest012-1
NodeTest012-2
NodeTest013-1
NodeTesthc-1
NodeTesthc-2
NodeTesthc-3
NodeTesthc-4
NodeTesthc-5
NodeTesthc-6
NodeTesthc-7
NodeTesthc-8
nametest-1
nametest-2
nametest-3
nametest-4
nametest-5
nametest-6
nametest-7
nametest-8
nametest-9
nametest-10
nametest-11
nametest-12
nametest-13
nametest-14
nametest-15
nametest-16
nametest-17
nametest-18
predicates-29
op-boolean-equal-17
fn-prefix-from-qname-5
fn-prefix-from-qname-6
fn-prefix-from-qname-9
fn-prefix-from-qname-10
fn-prefix-from-qname-11
fn-prefix-from-qname-12
fn-prefix-from-qname-13
fn-prefix-from-qname-14
fn-prefix-from-qname-15
fn-prefix-from-qname-16
fn-prefix-from-qname-17
fn-prefix-from-qname-18
fn-prefix-from-qname-19
fn-prefix-from-qname-20
op-logical-and-001
op-logical-and-002
op-logical-and-003
op-logical-and-004
op-logical-and-005
op-logical-and-006
op-logical-and-007
op-logical-and-008
op-logical-and-009
op-logical-and-010
op-logical-and-011
op-logical-and-012
op-logical-and-013
op-logical-and-014
op-logical-and-015
op-logical-and-016
op-logical-and-017
op-logical-and-018
op-logical-and-019
op-logical-and-020
op-logical-and-021
op-logical-and-022
op-logical-and-023
op-logical-and-024
op-logical-and-025
op-logical-and-026
op-logical-and-027
op-logical-and-028
op-logical-and-029
op-logical-and-030
op-logical-and-031
op-logical-and-032
op-logical-and-033
op-logical-and-034
op-logical-and-035
op-logical-and-036
op-logical-and-037
op-logical-and-038
op-logical-and-039
op-logical-and-040
op-logical-and-041
op-logical-and-042
op-logical-and-043
op-logical-and-044
op-logical-and-045
op-logical-and-046
op-logical-and-047
op-logical-and-048
op-logical-and-049
op-logical-and-050
op-logical-and-051
op-logical-and-052
op-logical-and-053
op-logical-and-054
op-logical-and-055
op-logical-and-056
op-logical-and-057
op-logical-and-058
op-logical-and-059
op-logical-and-060
op-logical-and-061
op-logical-and-062
op-logical-and-063
op-logical-and-064
op-logical-and-065
op-logical-and-066
op-logical-and-067
op-logical-and-068
op-logical-and-069
op-logical-and-070
op-logical-and-071
op-logical-and-072
op-logical-and-073
op-logical-and-074
op-logical-and-075
op-logical-and-076
op-logical-and-077
op-logical-and-078
op-logical-and-079
op-logical-and-080
op-logical-and-081
op-logical-and-082
op-logical-and-083
op-logical-and-084
op-logical-and-085
op-logical-and-086
op-logical-and-087
op-logical-and-088
op-logical-and-089
op-logical-and-090
op-logical-and-091
op-logical-and-092
op-logical-and-093
op-logical-and-094
op-logical-and-095
op-logical-and-096
op-logical-and-097
op-logical-and-098
op-logical-and-099
op-logical-and-100
op-logical-and-101
op-logical-and-102
op-logical-and-103
op-logical-and-104
op-logical-and-105
op-logical-and-106
op-logical-and-107
op-logical-and-108
op-logical-and-109
op-logical-and-110
op-logical-and-111
op-logical-and-112
op-logical-and-113
op-logical-and-114
op-logical-and-115
op-logical-and-116
op-logical-and-117
op-logical-and-118
op-logical-and-119
op-logical-and-120
op-logical-and-121
op-logical-and-122
op-logical-and-123
op-logical-and-124
op-logical-and-125
op-logical-and-126
op-logical-and-127
op-logical-and-128
op-logical-and-129
op-logical-and-130
op-logical-and-131
op-logical-and-132
op-logical-and-133
op-logical-and-134
op-logical-and-135
op-logical-and-136
op-logical-and-137
op-logical-and-138
op-logical-and-139
op-logical-and-140
op-logical-and-141
op-logical-and-142
op-logical-and-143
op-logical-and-144
op-logical-and-145
op-logical-and-146
op-logical-and-147
op-logical-and-148
op-logical-and-149
op-logical-and-150
op-logical-and-151
op-logical-and-152
op-logical-and-153
op-logical-and-154
op-logical-and-155
op-logical-and-156
op-logical-and-157
op-logical-and-158
op-logical-and-159
op-logical-or-001
op-logical-or-002
op-logical-or-003
op-logical-or-004
op-logical-or-005
op-logical-or-006
op-logical-or-007
op-logical-or-008
op-logical-or-009
op-logical-or-010
op-logical-or-011
op-logical-or-012
op-logical-or-013
op-logical-or-014
op-logical-or-015
op-logical-or-016
op-logical-or-017
op-logical-or-018
op-logical-or-019
op-logical-or-020
op-logical-or-021
op-logical-or-022
op-logical-or-023
op-logical-or-024
op-logical-or-025
op-logical-or-026
op-logical-or-027
op-logical-or-028
op-logical-or-029
op-logical-or-030
op-logical-or-031
op-logical-or-032
op-logical-or-033
op-logical-or-034
op-logical-or-035
op-logical-or-036
op-logical-or-037
op-logical-or-038
op-logical-or-039
op-logical-or-040
op-logical-or-041
op-logical-or-042
op-logical-or-043
op-logical-or-044
op-logical-or-045
op-logical-or-046
op-logical-or-047
op-logical-or-048
op-logical-or-049
op-logical-or-050
op-logical-or-051
op-logical-or-052
op-logical-or-053
op-logical-or-054
op-logical-or-055
op-logical-or-056
op-logical-or-057
op-logical-or-058
op-logical-or-059
op-logical-or-060
op-logical-or-061
op-logical-or-062
op-logical-or-063
op-logical-or-064
op-logical-or-065
op-logical-or-066
op-logical-or-067
op-logical-or-068
op-logical-or-069
op-logical-or-070
op-logical-or-071
op-logical-or-072
op-logical-or-073
op-logical-or-074
op-logical-or-075
op-logical-or-076
op-logical-or-077
op-logical-or-078
op-logical-or-079
op-logical-or-080
op-logical-or-081
op-logical-or-082
op-logical-or-083
op-logical-or-084
op-logical-or-085
op-logical-or-086
op-logical-or-087
op-logical-or-088
op-logical-or-089
op-logical-or-090
op-logical-or-091
op-logical-or-092
op-logical-or-093
op-logical-or-094
op-logical-or-095
op-logical-or-096
op-logical-or-097
op-logical-or-098
op-logical-or-099
op-logical-or-100
op-logical-or-101
op-logical-or-102
op-logical-or-103
op-logical-or-104
op-logical-or-105
op-logical-or-106
op-logical-or-107
op-logical-or-108
op-logical-or-109
op-logical-or-110
op-logical-or-111
op-logical-or-112
op-logical-or-113
op-logical-or-114
op-logical-or-115
op-logical-or-116
op-logical-or-117
op-logical-or-118
op-logical-or-119
op-logical-or-120
op-logical-or-121
op-logical-or-122
op-logical-or-123
op-logical-or-124
op-logical-or-125
op-logical-or-126
op-logical-or-127
op-logical-or-128
op-logical-or-129
op-logical-or-130
op-logical-or-131
op-logical-or-132
op-logical-or-133
op-logical-or-134
op-logical-or-135
op-logical-or-136
op-logical-or-137
op-logical-or-138
op-logical-or-139
op-logical-or-140
op-logical-or-141
op-logical-or-142
op-logical-or-143
op-logical-or-144
op-logical-or-145
op-logical-or-146
op-logical-or-147
op-logical-or-148
op-logical-or-149
op-logical-or-150
op-logical-or-151
op-logical-or-152
op-logical-or-153
op-logical-or-154
op-logical-or-155
op-logical-or-156
op-logical-or-157
op-logical-or-158
op-logical-or-159
ReturnExpr010
CondExpr006
CondExpr010
CondExpr011
CondExpr012
CondExpr013
CondExpr014
CondExpr015
quantexpr-61
quantexpr-62
quantexpr-63
quantexpr-64
quantexpr-65
CastAs660
CastAs661
CastAs662
CastAs663
CastAs664
CastAs665
CastAs666
CastAs667
CastAs668
CastAs669
CastAs670
CastAs671
CastAs672
CastableAs648
XQueryComment002
XQueryComment009
XQueryComment011
fn-string-1
fn-string-3
fn-base-uri-1
fn-base-uri-22
fn-static-base-2
fn-static-base-3
fn-static-base-4
fn-static-base-5
fn-static-base-6
fn-static-base-7
fn-static-base-8
fn-static-base-9
fn-static-base-10
fn-static-base-11
fn-static-base-12
fn-static-base-13
fn-static-base-14
fn-trace-2
fn-trace-9
fn-string-length-18
fn-normalize-space-2
fn-resolve-uri-2
LocalNameFromQNameFunc006
LocalNameFromQNameFunc007
NamespaceURIFromQNameFunc006
NamespaceURIFromQNameFunc007
fn-name-7
fn-name-23
fn-local-name-1
fn-local-name-23
fn-namespace-uri-1
fn-namespace-uri-26
fn-number-3
fn-number-4
fn-lang-1
fn-root-1
fn-boolean-mixed-args-001
fn-boolean-mixed-args-002
fn-boolean-mixed-args-003
fn-boolean-mixed-args-004
fn-boolean-mixed-args-005
fn-boolean-mixed-args-006
fn-boolean-mixed-args-007
fn-boolean-mixed-args-008
fn-boolean-mixed-args-009
fn-boolean-mixed-args-010
fn-boolean-mixed-args-011
fn-boolean-mixed-args-012
fn-boolean-mixed-args-013
fn-boolean-mixed-args-014
fn-boolean-mixed-args-015
fn-boolean-mixed-args-016
fn-boolean-mixed-args-017
fn-boolean-mixed-args-018
fn-boolean-mixed-args-019
fn-boolean-mixed-args-020
fn-boolean-mixed-args-021
fn-boolean-mixed-args-022
fn-boolean-mixed-args-023
fn-boolean-mixed-args-024
fn-boolean-mixed-args-025
fn-boolean-mixed-args-026
fn-boolean-mixed-args-027
fn-boolean-mixed-args-028
fn-boolean-mixed-args-029
fn-boolean-mixed-args-030
fn-boolean-mixed-args-031
fn-boolean-mixed-args-032
fn-boolean-mixed-args-033
fn-boolean-mixed-args-034
fn-boolean-mixed-args-035
fn-boolean-mixed-args-036
fn-boolean-mixed-args-037
fn-boolean-mixed-args-038
fn-boolean-mixed-args-039
fn-boolean-mixed-args-040
fn-boolean-mixed-args-041
fn-boolean-mixed-args-042
fn-boolean-mixed-args-043
fn-boolean-mixed-args-044
fn-boolean-mixed-args-045
fn-boolean-mixed-args-046
fn-boolean-mixed-args-047
fn-boolean-mixed-args-048
context-item-1
fn-max-3
fn-min-3
fn-id-2
fn-id-22
fn-id-dtd-23
fn-idref-2
fn-idref-22
fn-doc-33
fn-doc-37
position-2
last-2
fn-id-23
qname-cast-2
qname-cast-3
qname-cast-4
user-defined-1
user-defined-2
user-defined-3
user-defined-4
validateexpr-1
validateexpr-2
validateexpr-3
validateexpr-4
validateexpr-5
validateexpr-6
validateexpr-7
validateexpr-8
validateexpr-9
validateexpr-10
validateexpr-11
validateexpr-12
validateexpr-13
validateexpr-14
validateexpr-15
validateexpr-16
validateexpr-16
validateexpr-18
validateexpr-19
validateexpr-20
validateexpr-21
validateexpr-23
tree-queries-results-q4
sgml-queries-results-q1
sgml-queries-results-q2
sgml-queries-results-q4
sgml-queries-results-q5
sgml-queries-results-q8a
sgml-queries-results-q8b
sgml-queries-results-q9
ns-queries-results-q2
ns-queries-results-q3
Catalog001
Catalog002
Catalog003</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27549</commentid>
    <comment_count>1</comment_count>
    <who name="Oliver Hallam">oliver</who>
    <bug_when>2009-09-22 12:55:54 +0000</bug_when>
    <thetext>I have started work on reviewing the is-XPath2 attribute on the tests, but there are some cases I where I am not sure what the correct value is.

consider fn-union-node-args-015:

(: insert-start :)
declare namespace atomic=&quot;http://www.w3.org/XQueryTest&quot;;
declare variable $input-context external;
(: insert-end :)

($input-context/atomic:root/atomic:integer) union ($input-context/atomic:root/atomic:integer)

If we merely strip the prolog then this is a valid XPath2 expression, but in order to evaluate the query then the namespace declaration must be added as an in-scope namespace.

The three options I can see are:
 1.  Set is-XPath2 to false
 2.  Require an XPath2 test harness to parse the (XQuery) prolog that appears between (: insert-start :) and (: insert-end :) - Is this a resonable burden to place on an XPath2 test runner?
 3.  Add the required namespace declarations and so on to the catalog. (This would just be duplicating the information - will this cause more trouble than it is worth?

(Is it even valid to have a namespace declaration in the insert-start/insert-end section? - this is not mentioned in the guidelines for running the test suite.)


The other case that I am unsure how to mark up is the tests that are valid XPath2 but return different results, for example literals056 (&quot;&amp;amp;&quot;).  I would argue that this is an important test and so should be marked as is-XPath2.  However there is no standard way of recording these alternate results.  I would suggest adding the is-XPath2 attribute to output-file as well and mark it up as such:

   &lt;test-case is-XPath2=&quot;true&quot; name=&quot;Literals056&quot;
              FilePath=&quot;Expressions/PrimaryExpr/Literals/&quot;
              scenario=&quot;standard&quot;
              Creator=&quot;Mike Rorke&quot;&gt;
      &lt;description&gt;Test for string literal containing the predefined entity reference &apos;&amp;amp;amp;&apos;.&lt;/description&gt;
      &lt;spec-citation spec=&quot;XQuery&quot; section-number=&quot;3.1.1&quot; section-title=&quot;Literals&quot;
                     section-pointer=&quot;id-literals&quot;/&gt;
      &lt;query name=&quot;Literals056&quot; date=&quot;2005-02-03&quot;/&gt;
      &lt;input-file role=&quot;principal-data&quot; variable=&quot;input-context&quot;&gt;emptydoc&lt;/input-file&gt;
      &lt;output-file is-XPath2=&quot;false&quot; role=&quot;principal&quot; compare=&quot;Text&quot;&gt;Literals056.txt&lt;/output-file&gt;
      &lt;output-file is-XPath2=&quot;true&quot; role=&quot;principal&quot; compare=&quot;Text&quot;&gt;Literals056-XPath.txt&lt;/output-file&gt;
   &lt;/test-case&gt;


Does anyone else have an opinion on which resolution is best?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32717</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hallam">oliver</who>
    <bug_when>2010-02-26 18:43:12 +0000</bug_when>
    <thetext>I have updated all the is-XPath2 attributes, marking tests as true that are valid XPath 2.0 tests (when stripping the content between (: insert-start :) and (: insert-end :)) and that give the same result under XPath and XQuery.

The tests that could be made XPath compatible have for the moment been marked as false.

I am marking this bug closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49370</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Mills">tim</who>
    <bug_when>2011-06-09 07:43:01 +0000</bug_when>
    <thetext>abbreviatedSyntax-26, which includes a &apos;let&apos; expression is incorrectly marked as is-XPath2 = &quot;true&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49501</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hallam">oliver</who>
    <bug_when>2011-06-13 14:42:49 +0000</bug_when>
    <thetext>I have made this change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49581</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Mills">tim</who>
    <bug_when>2011-06-14 13:47:15 +0000</bug_when>
    <thetext>Confixed fixed.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>