Re: SD5 - Namespaces - New Version 2

Andrew Layman wrote:
> <xml-namespace><ref>http://www.bigbookstore.com/schema</ref><as>bk</as></xml-namespace>
> 
> <xml-namespace><ref>http://www.w3.org</ref><as>w3</as></xml-namespace>
>          <bk:ORDERS>
> 
> <xml-namespace><ref>http://purl.org/dublincore</ref><as>dc</as></xml-nam
> espace>
> 
> <xml-namespace><ref>http://www.shipping.com</ref><as>sh</as></xml-namesp
> ace>
>                  <LINEITEM>
>                          <dc:NAME>Number, the Language of
> Science</dc:NAME>
>                          <dc:AUTHOR>Dantzig</dc:AUTHOR>
>                          <PRICE>5.95</PRICE>
>                          <sh:ZONE>9</sh:ZONE>
>                          <w3:DSIG> <DIGEST>1234567890</DIGEST>
> 
> <SIGNER>AndrewL@microsoft.com</SIGNER>
>                         </w3:DSIG>
>                 </LINEITEM >
>         </bk:ORDERS>
> </XML>

Why must the schema be part of the GI? Why not write

(1)    ...
       <author xml-schema="http://purl.org/dublincore">Dantzig<>
       ...

instead? Another way would be to write

(2)    ...
       <!doctype author "http://purl.org/dublincore">
       <author>Dantzig<>
       ...

but solution (1) has the advantage that it can be defaulted:

       <?xml-defaults author
           xml-schema = "http://purl.org/dublincore">
       ...
       <author>Dantzig<>
       ...
       <author>Layman<>

Note 1. Although many schemas may be used in a single document, each
element only conforms to one of them at a time. This is important,
because multiple inheritance would be a real can of worms.

Note 2. There is a difference between "schema" and "scheme". In the
example above, the AUTHOR element would be taken to contain the name of
an author, because of the Dublin Core schema, but DC doesn't prescribe
any scheme, so we still don't know how to decode the content of the
element. I suggest that Dublin Core is not a real, concrete schema, but
a "meta-schema". A real schema would include a way to find out what the
scheme for the content was.

Note 3. All the examples assume that the name of the element (AUTHOR)
is fixed. You cannot have an element named, e.g., AUTEUR and have it
function like the thing called "author" in the schema. This may be a
problem, see also note 6. A solution could be to use a fragment-id to
explicitly indicate the name in the schema:
xml-schema="http://purl.org/dublincore#author"

Note 4. Like all solutions that involve attributes with
"xml-" in their name, this is an architectural form.

Note 5. Keeping the URL as an attribute of the element avoids an extra
indirection, but more importantly also avoids long-distance
dependencies.
It is hard to be certain that the XML-NAMESPACE element in Andrew's
example is still in scope when the AUTHOR element is reached.

Note 6. Schemas can be nested, but there is a clear boundary where the
authority of one schema ends and the next one begins. In the example,
AUTHOR is a valid element inside a LINEITEM, but the schema (or DTD) for
LINEITEM does not regulate what can be inside the AUTHOR element,
because
AUTHOR has its own schema. This may be a problem, since, as note 3
mentioned, the schema for LINEITEM may require an AUTEUR element, but
the
Dublin Core calls it an "author" instead.



Bert

PS. "<>"
is my candicate for the short end-tag.

Received on Friday, 23 May 1997 19:49:11 UTC