This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 28639 - [QT3] fn-element-with-id-1 to xxx-5 should be schema-aware
Summary: [QT3] fn-element-with-id-1 to xxx-5 should be schema-aware
Status: CLOSED WONTFIX
Alias: None
Product: XPath / XQuery / XSLT
Classification: Unclassified
Component: XQuery 3 & XPath 3 Test Suite (show other bugs)
Version: Recommendation
Hardware: PC Windows NT
: P2 normal
Target Milestone: ---
Assignee: O'Neil Delpratt
QA Contact: Mailing list for public feedback on specs from XSL and XML Query WGs
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-05-14 15:28 UTC by Abel Braaksma
Modified: 2016-02-02 23:22 UTC (History)
2 users (show)

See Also:


Attachments

Description Abel Braaksma 2015-05-14 15:28:36 UTC
The following tests should be schema-aware (I mean, have a dependency on the schema-ware feature):

- fn-element-with-id-1
- fn-element-with-id-2
- fn-element-with-id-3
- fn-element-with-id-4
- fn-element-with-id-5
Comment 1 Michael Kay 2015-06-16 17:12:38 UTC
It should actually be the SchemaValidation feature.

From guide/running.html:

schemaValidation... Requires a query to support the validate expression, and/or to be able to accept source documents that have been validated.

schemaImport...     Requires the query to support an import schema declaration.

The schemaAware feature is obsolete.

(And the dependency is pretty redundant: you can assume that any test whose environment has a schema in it is dependent on the schemaValidation feature)
Comment 2 Michael Kay 2015-06-16 17:41:20 UTC
I have written test Catalog015 which checks for tests whose environment has a schema but which have no dependency on schemaValidation or schemaImport. Here's the list:

K2-DataFunc-6
 fn-element-with-id-1
 fn-element-with-id-2
 fn-element-with-id-3
 fn-element-with-id-4
 fn-element-with-id-5
 fn-in-scope-prefixes-24
 json-to-xml-001
 json-to-xml-002
 json-to-xml-003
 json-to-xml-004
 json-to-xml-005
 json-to-xml-006
 json-to-xml-007
 json-to-xml-013
 json-to-xml-014
 json-to-xml-015
 json-to-xml-018
 json-to-xml-021
 json-to-xml-022
 json-to-xml-025
 json-to-xml-036
 json-to-xml-040
 json-to-xml-error-002
 json-to-xml-error-003
 json-to-xml-error-004
 json-to-xml-error-005
 json-to-xml-error-006
 json-to-xml-error-007
 json-to-xml-error-008
 json-to-xml-error-009
 json-to-xml-error-010
 json-to-xml-error-011
 json-to-xml-error-012
 json-to-xml-error-013
 json-to-xml-error-014
 json-to-xml-error-015
 json-to-xml-error-016
 json-to-xml-error-017
 json-to-xml-error-018
 json-to-xml-error-019
 json-to-xml-error-020
 json-to-xml-error-021
 json-to-xml-error-022
 json-to-xml-error-023
 json-to-xml-error-024
 json-to-xml-error-025
 json-to-xml-error-026
 json-to-xml-error-027
 fn-local-name-3
 fn-local-name-4
 fn-local-name-5
 fn-local-name-8a
 fn-local-name-11a
 fn-local-name-13a
 LocalNameFromQNameFunc001
 LocalNameFromQNameFunc002
 LocalNameFromQNameFunc003
 LocalNameFromQNameFunc004
 LocalNameFromQNameFunc005
 LocalNameFromQNameFunc010
 LocalNameFromQNameFunc012
 LocalNameFromQNameFunc013
 LocalNameFromQNameFunc014
 LocalNameFromQNameFunc018
 LocalNameFromQNameFunc019
 LocalNameFromQNameFunc020
 NamespaceURIFromQNameFunc001
 NamespaceURIFromQNameFunc002
 NamespaceURIFromQNameFunc003
 NamespaceURIFromQNameFunc004
 NamespaceURIFromQNameFunc005
 NamespaceURIFromQNameFunc010
 NamespaceURIFromQNameFunc012
 NamespaceURIFromQNameFunc013
 NamespaceURIFromQNameFunc014
 NamespaceURIFromQNameFunc018
 NamespaceURIFromQNameFunc019
 NamespaceURIFromQNameFunc020
 fn-not-22
 fn-not-23
 fn-not-28
 fn-not-29
 serialize-xml-001
 serialize-xml-002
 serialize-xml-003
 serialize-xml-004
 serialize-xml-005
 serialize-xml-006
 serialize-xml-007
 serialize-xml-007a
 serialize-xml-009
 serialize-xml-011
 serialize-xml-012
 serialize-xml-013
 serialize-xml-014
 serialize-xml-015
 serialize-xml-016
 serialize-xml-017
 serialize-xml-018
 serialize-xml-019
 serialize-xml-020
 serialize-xml-021
 serialize-xml-022
 serialize-xml-023
 serialize-xml-024
 serialize-xml-025
 serialize-xml-026
 serialize-xml-027
 serialize-xml-028
 serialize-xml-029
 serialize-xml-030
 serialize-xml-031
 fn-string-length-24
 fn-string-length-25
 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-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-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
 Constr-compattr-compname-8
 Constr-docnode-constrmod-1
 Constr-docnode-constrmod-2
 Constr-docnode-constrmod-3
 Constr-docnode-constrmod-4
 Constr-compelem-compname-8
 Constr-comppi-compname-8
 Constr-comppi-compname-9
 Constr-cont-constrmod-1
 Constr-cont-constrmod-2
 Constr-cont-constrmod-3
 Constr-cont-constrmod-4
 Constr-cont-constrmod-5
 Constr-cont-constrmod-6
 Constr-cont-constrmod-7
 Constr-cont-constrmod-8
 Constr-cont-nsmode-5
 Constr-cont-nsmode-6
 Constr-cont-nsmode-7
 Constr-cont-nsmode-8
 Constr-cont-nsmode-9
 Constr-cont-nsmode-10
 ForExprType009
 ForExprType011
 ForExprType013
 ForExprType014
 ForExprType022
 ForExprType023
 ForExprType024
 ForExprType036
 ForExprType045
 ForExprType046
 ForExprType047
 instanceof134
 cbcl-module-004
 orderBy1
 orderBy2
 orderBy3
 orderBy4
 orderBy5
 orderBy6
 orderBy7
 orderBy8
 orderBy9
 orderBy10
 orderBy11
 orderBy12
 orderBy13
 orderBy14
 orderBy15
 orderBy16
 orderBy17
 orderBy18
 orderBy19
 orderBy20
 orderBy21
 orderBy22
 orderBy23
 orderBy24
 orderBy25
 orderBy26
 orderBy27
 orderBy28
 orderBy30
 orderBy31
 orderBy32
 orderBy33
 orderBy34
 orderBy35
 orderBy36
 orderBy37
 orderBy38
 orderBy39
 orderBy40
 orderBy41
 orderBy42
 orderBy43
 orderBy44
 orderBy45
 orderBy46
 orderBy47
 orderBy49
 orderBy50
 orderBy51
 orderBy53
 orderBy54
 orderBy55
 orderBy56
 orderBy57
 orderBy59
 orderBy60
 orderBy61
 orderBy62
 orderBy63
 orderBy64
 orderBy65
 orderBy66
 WindowingUseCase01S
 WindowingUseCase02S
 WindowingUseCase03S
 WindowingUseCase04S
 WindowingUseCase05S
 WindowingUseCase06S
 WindowingUseCase08S
 WindowingUseCase09S
 WindowingUseCase10S
 WindowingUseCase12S
 WindowingUseCase14S
 WindowingUseCase15S
 WindowingUseCase16S
 WindowingUseCase17S
 WindowingUseCase18S
 WindowingUseCase19S
 combined-errors-2
 combined-errors-3
 XQTY0086_1
 XQTY0086_2
 XQTY0086_3
 Catalog001
 Catalog003
 Catalog004
 Catalog005
 Catalog006
 Catalog007
 Catalog008
 Catalog009
 Catalog010
 Catalog011
 Catalog012
 Catalog013
 Catalog014
 Catalog015
Comment 3 Michael Kay 2015-07-15 13:53:48 UTC
DECIDED that test drivers should assume a dependency on schema-awareness if the metadata for the test indicates that it uses a schema. O'Neil to update the test suite documentation accordingly. The tests listed in the bug entry will NOT be updated to add a dependency on schema-awareness.
Comment 4 Abel Braaksma 2015-07-15 16:20:47 UTC
I find it a rather unfortunate decision, as it makes it harder to find out what a test is about, and it breaks the general rule that the metadata must be complete. Now you need to browse to wherever the dependencies are to find out whether a test requires the schemaImport or Validation feature.

And what happens in the case that the schemaValidation or schemaImport dependencies are set with satisfies="false" and the test uses a schema in its metadata?

<dependency type="feature" value="schemaImport" satisfied="false"/>

I would assume that at the test-level this would override whether or not there is a <schema> component in the environment, such that it enables you to test behavior of processors with tests that require schema's but that themselves do not support, or have switched off schema-import/validation.

But at the global level(s) it becomes trickier: if the test-set contains a dependency, does it override "soft dependencies" such as the one proposed, or does the soft-dependency take precedence? And what for the catalog level?

I would personally prefer this decision to be reverted and to have tests in "good shape", but I was not present at the meeting...
Comment 5 O'Neil Delpratt 2015-07-17 13:31:02 UTC
WG has looked at this bug again at today's F2F bug has upheld its decision made in comment 3.
Comment 6 Abel Braaksma 2015-07-17 18:52:11 UTC
Understandable, but will the conflicting rules be addressed? I would assume that *if* a <dependency> element is present at any level (catalog, test-set, test), it always overrides a *default* dependency level induced by the presence (or not) of <schema> components. Is that assumption correct?
Comment 7 Benito van der Zander 2016-02-02 00:05:23 UTC
I would have agreed with Abel, it is strange decision.

By the way, almost all the tests in the list pass fine by loading the XML without schema validation (actually did not notice any other tests than element-with-id failing). 

Tests like fn-not-22 ( not(//banana) ), when there is no banana with schema, there is no banana without schema either...
Comment 8 Michael Kay 2016-02-02 12:51:13 UTC
You wouldn't think it were a strange decision if you were the one being asked to add this entirely redundant information to a couple of hundred tests.

If you would like to modify these tests to remove the unnecessary dependency on a schema then of course your efforts will be greatly appreciated by those wanting to test non-schema-aware processors. (There are similarly many tests with an unnecessary dependency on XQuery that could easily be made into XPath tests.)
Comment 9 Benito van der Zander 2016-02-02 21:11:18 UTC
But you already wrote a query to find the list of tests without schema dependency. It wouuld be straight forward to automatically add the dependency to them with another query.

Anyways, I doubt there are hundred tests. 
It is more like ten.




The following tests from your list pass, even if the schema is ignored:

Catalog001
Catalog003
Catalog004
Catalog005
Catalog006
Catalog007
Catalog008
Catalog009
Catalog010
Catalog012
Catalog013
cbcl-module-004
combined-errors-2
combined-errors-3
Constr-compattr-compname-8
Constr-compelem-compname-8
Constr-comppi-compname-8
Constr-comppi-compname-9
Constr-cont-constrmod-1
Constr-cont-constrmod-2
Constr-cont-constrmod-3
Constr-cont-constrmod-4
Constr-cont-constrmod-5
Constr-cont-constrmod-6
Constr-cont-constrmod-7
Constr-cont-constrmod-8
Constr-cont-nsmode-5
Constr-cont-nsmode-6
Constr-cont-nsmode-9
Constr-docnode-constrmod-1
Constr-docnode-constrmod-2
Constr-docnode-constrmod-3
Constr-docnode-constrmod-4
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-in-scope-prefixes-24
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-local-name-11a
fn-local-name-13a
fn-local-name-3
fn-local-name-4
fn-local-name-5
fn-local-name-8a
fn-not-22
fn-not-23
fn-not-28
fn-not-29
fn-string-length-24
fn-string-length-25
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
ForExprType011
ForExprType013
ForExprType014
ForExprType022
ForExprType023
ForExprType036
ForExprType045
ForExprType046
ForExprType047
instanceof134
LocalNameFromQNameFunc001
LocalNameFromQNameFunc002
LocalNameFromQNameFunc003
LocalNameFromQNameFunc004
LocalNameFromQNameFunc005
LocalNameFromQNameFunc010
LocalNameFromQNameFunc012
LocalNameFromQNameFunc013
LocalNameFromQNameFunc014
LocalNameFromQNameFunc018
LocalNameFromQNameFunc019
LocalNameFromQNameFunc020
NamespaceURIFromQNameFunc001
NamespaceURIFromQNameFunc002
NamespaceURIFromQNameFunc003
NamespaceURIFromQNameFunc004
NamespaceURIFromQNameFunc005
NamespaceURIFromQNameFunc010
NamespaceURIFromQNameFunc012
NamespaceURIFromQNameFunc013
NamespaceURIFromQNameFunc014
NamespaceURIFromQNameFunc018
NamespaceURIFromQNameFunc019
NamespaceURIFromQNameFunc020
orderBy1
orderBy10
orderBy11
orderBy12
orderBy13
orderBy14
orderBy15
orderBy16
orderBy17
orderBy18
orderBy19
orderBy2
orderBy20
orderBy21
orderBy22
orderBy23
orderBy24
orderBy25
orderBy26
orderBy27
orderBy28
orderBy3
orderBy30
orderBy31
orderBy32
orderBy33
orderBy34
orderBy35
orderBy36
orderBy37
orderBy38
orderBy39
orderBy4
orderBy40
orderBy41
orderBy42
orderBy43
orderBy44
orderBy45
orderBy46
orderBy47
orderBy49
orderBy5
orderBy50
orderBy51
orderBy53
orderBy54
orderBy55
orderBy56
orderBy57
orderBy59
orderBy6
orderBy60
orderBy61
orderBy62
orderBy63
orderBy64
orderBy65
orderBy66
orderBy7
orderBy8
orderBy9
serialize-xml-001
serialize-xml-002
serialize-xml-003
serialize-xml-004
serialize-xml-006
serialize-xml-007
serialize-xml-007a
serialize-xml-011
serialize-xml-016
serialize-xml-017
serialize-xml-018
serialize-xml-026
serialize-xml-027
serialize-xml-028
WindowingUseCase01S
WindowingUseCase02S
WindowingUseCase03S
WindowingUseCase04S
WindowingUseCase05S
WindowingUseCase06S
WindowingUseCase08S
WindowingUseCase09S
WindowingUseCase10S
WindowingUseCase12S
WindowingUseCase14S
WindowingUseCase15S
WindowingUseCase16S
WindowingUseCase17S
WindowingUseCase18S
WindowingUseCase19S






Only these fail (in my implementation, which does not have serialize, yet.):


Catalog011
Catalog014
Constr-cont-nsmode-10
Constr-cont-nsmode-7
Constr-cont-nsmode-8
fn-element-with-id-1
fn-element-with-id-2
fn-element-with-id-3
fn-element-with-id-4
fn-element-with-id-5
ForExprType009
ForExprType024
K2-DataFunc-6
serialize-xml-005
serialize-xml-009
serialize-xml-013
serialize-xml-014
serialize-xml-015
serialize-xml-019
serialize-xml-020
serialize-xml-021
serialize-xml-022
serialize-xml-023
serialize-xml-024
serialize-xml-025
serialize-xml-029
serialize-xml-030
serialize-xml-031


Although I could not test those:

fn-element-with-id-1
json-to-xml-001
json-to-xml-002
json-to-xml-003
json-to-xml-004
json-to-xml-005
json-to-xml-006
json-to-xml-007
json-to-xml-013
json-to-xml-014
json-to-xml-015
json-to-xml-018
json-to-xml-021
json-to-xml-022
json-to-xml-025
json-to-xml-036
json-to-xml-040
json-to-xml-error-002
json-to-xml-error-003
json-to-xml-error-004
json-to-xml-error-005
json-to-xml-error-006
json-to-xml-error-007
json-to-xml-error-008
json-to-xml-error-009
json-to-xml-error-010
json-to-xml-error-011
json-to-xml-error-012
json-to-xml-error-013
json-to-xml-error-014
json-to-xml-error-015
json-to-xml-error-016
json-to-xml-error-017
json-to-xml-error-018
json-to-xml-error-019
json-to-xml-error-020
json-to-xml-error-021
json-to-xml-error-022
json-to-xml-error-023
json-to-xml-error-024
json-to-xml-error-025
json-to-xml-error-026
json-to-xml-error-027
serialize-xml-012
XQTY0086_1
XQTY0086_2
XQTY0086_3
Comment 10 Michael Kay 2016-02-02 23:22:52 UTC
>It wouuld be straight forward to automatically add the dependency
to them with another query.

Unfortunately any attempt to update these files automatically loses a lot of human readability, even if you take great care with the serialization parameters. Since human readability is so important, I don't attempt it.