Yet another stupid namespace question...
Ronald Bourret
rbourret at ito.tu-darmstadt.de
Fri Jul 16 15:26:33 BST 1999
Ron Bourret wrote:
> A partial solution is as follows:
>
> 1) When reading the schema(s), keep a list of all element declarations
that
> declare defaults for xmlns and xmlns:xxx attributes along with the
prefixes
> and namespace URIs they use.
>
> 2) For each element you encounter, check if its base (unprefixed) name
> appears in this list. Note that a single name may occur multiple times in
> the list.
>
> 3) If the element is in the list, check if its prefix (or lack thereof)
> matches any of the prefixes stored in the list for that element.
> a) If so, get the relevant namespace URI, construct the qualified name,
and
> proceed normally.
> b) If not, then the element belongs to the namespace according to the
> current value of its prefix (or lack thereof). If there is no match for
the
> prefix (or lack thereof), then an error occurs, as this is a
> must-use-schemas scenario and no schema can be located because we don't
> have a namespace URI.
On further reflection, I've realized that this solution is broken. For
example, suppose I define an element A which sets the default namespace to
http://foo and that I define an element B in the content of element A. Now
suppose you like my element A and incorporate it into your element C, which
has a different element B in its content. Suppose also that your element B
defines the default namespace as http://bar.
Written with explicit namespace declarations, I can tell the difference
between my B and your B:
<C>
<A xmlns="http://foo">
<B><!--This is my B --></B>
</A>
<B xmlns="http://bar"><!-- This is your B --></B>
</C>
Written with implicit namespace declarations (see below), my algorithm
breaks: when the processor encounters my B, it will search the list of
elements that declare default namespaces, find your B, and mistakenly
report an error.
<C>
<A>
<B><!--This is my B --></B>
</A>
<B><!-- This is your B --></B>
</C>
Note that it is not possible to write a DTD for the implicit case, as it
requires two different definitions for element B. (I believe it is possible
to write a schema for this case.)
-- Ron Bourret
xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)
More information about the Xml-dev
mailing list