[XQuery Talk Mailing List Archive Home] [By Date] [By Thread] [By Subject] [By Author] [Recent Entries] [Reply To This Message]

Namespace question wrt. XQTS and XQuery/XSLT2Serialization spec

Wolfgang Hoschek wolfgang.hoschek at mac.com
Sun Nov 13 10:20:00 PST 2005


xqts
>
> So the question is the same as asking whether the serializer  
> retains all the
> namespaces of an element, or only those that are actually used. The  
> answer
> is that it can't know which namespaces are actually used (because  
> of the
> possibility of namespace-sensitive content) so it retains them all.
>
>
>> I noticed that W3C XQTS requires method 2) at times due to Canonical
>> XML comparison, e.g. for SeqUnion/fn-union-node-args-015.xq et al.
>>
>
> This shows up a deficiency in the test driver I have been using for  
> testing
> Saxon. I'm comparing results using the deep-equals() method, which  
> doesn't
> require two elements to have the same in-scope namespaces in order  
> to be
> deep equal. A more rigorous comparator would have spotted this  
> error in the
> published test results.

So far I'm using the (awkward) serialization and reparse test route.  
This way such issues do show up.

>
> Saxon's actual results for this query are:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <atomic:integer xmlns:atomic="http://www.w3.org/XQueryTest"
>                 xmlns:foo="http://www.example.com/foo"
>
> xmlns:xsi="http://www.w3.org/2001/XMLSchema- 
> instance">12678967543233</atomic
> :integer>

Nux's actual results are identical to Saxon's. So the morale of the  
story is that there seems to be yet another bug in the XQTS test cases.

For example in

SeqUnion/fn-union-node-args-015.xq and friends
SeqIntersect/fn-intersect-node-args-014.xq and friends
SeqExcept/fn-except-node-args-017.xq

As noted by others, the XQTS test cases seem to have many inaccuaries/ 
bugs. In fact more than Saxon and Nux combined.

>
> There's a possible question about what happens if you specify
>
> declare copy-namespaces no-preserve, no-inherit;
>
> This query is not actually creating or copying any nodes, so the  
> prolog
> declaration wouldn't appear to make any difference. Serialization  
> does copy
> the element (Serialization section 2 rule 1) but I don't think a copy
> operation performed by the serializer is subject to the copy- 
> namespaces
> declaration (which can vary, after all, from one query module to  
> another).
> If you do this, however:
>
> declare copy-namespaces no-preserve, no-inherit;
> document {
>   ($input-context/atomic:root/atomic:integer) union
> ($input-context/atomic:root/atomic:integer)
> }
>
> then the element node is copied, and the redundant namespaces are  
> therefore
> dropped.
>
> If you're using XML 1.1 you can specify xmlns:foo="", and the foo  
> namespace
> will then not be in scope for this element, and no namespace  
> declaration
> will therefore be output by the serializer.

IMHO, serialization semantics should independent of whatever the  
query reads. In other words the input to serialization is a sequence,  
rather than a sequence + query + namespaces.

Wolfgang.


PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2011 All Rights Reserved.