
HI XML namespace is a source of headache, when we need to import a fragment of XML from a document to document.. My interpretation is that, when we say @cdl:refroot has a QName value, it should be so in description time, not in resolution time. That is, the prefix must be interpreted where it is written. An implementation headache is that we must carry over the namespace context from the original template. <cdl:cdl > <cdl:configuration > <p1:local xmlns:p1="http://cddlm.org/prefix1"> <newvalue>prefix1</newvalue> </p1:local> <p1:local xmlns:p1="http://cddlm.org/prefix2"> <newvalue>prefix2</newvalue> </p1:local> <node xmlns:p1="http://cddlm.org/prefix1"> <value cdl:ref="/newvalue" cdl:refroot="p1:local" /> </node> <toplevel cdl:extends="node" xmlns:p1="http://cddlm.org/prefix2"> </toplevel> </cdl:configuration> <cdl:system > <app> <user cdl:ref="value" cdl:refroot="toplevel"/> </app> </cdl:system> </cdl:cdl> cdl:extends at toplevel should be resolved to something equivalent to: <toplevel xmlns:p1="http://cddlm.org/prefix2"> <value cdl:ref="/newvalue" cdl:refroot="p1:local" xmlns:p1="http://cddlm.org/prefix1"/> </toplevel> Thanks, Jun Steve Loughran wrote:
Steve Loughran wrote:
I've just checked in
-more valid (non-lazy) reference tests -new invalid non-lazy reference tests -the first refroot tests.
These tests are encoding my (mis?)-understanding of the ref and especially refroot bits of the spec. Please check and advise me of any errors.
The fun ones are refroot related. I believe the following is valid (cddlm-cdl-2005-02-0010)
<cdl:cdl > <cdl:configuration xmlns:test1="http://cddlm.org/test1.cdl" > <test1:toplevel> <test1:value>username</test1:value> </test1:toplevel> </cdl:configuration> <cdl:system xmlns:t1="http://cddlm.org/test1.cdl"> <app> <user cdl:ref="t1:value" cdl:refroot="t1:toplevel"/> </app> </cdl:system> </cdl:cdl>
This uses qnames and resolves against something in cdl:configuration
I am now starting to think that XML is invalid. It all depends upon where QName prefixes are evaluated.
It may be legit to use xmlns prefixes that are only defined in the context of the destination reference, e.g. <user cdl:ref="test1:value" cdl:refroot="t1:toplevel"/>
I am going to read up on Xpath and think about this some more.
What is everyone else doing regarding QName prefix lookup during resolution? There is no coverage of the problem in the specification itself,.
-steve