XSchema Spec, Section 3, Draft 2 (Namespaces)

Simon St.Laurent SimonStL at classic.msn.com
Thu Jul 2 22:46:45 BST 1998

Here's another go, trying to make everyone happy and cover my butt for the 
multiple interpretations I can derive from the current draft.  I took James 
Anderson's suggestion that both the PI and the element could be included as a 
reasonable way to cover all possibilities.  While I don't think the PI is 
necessary, I can read that into the namespaces spec if I try hard enough.  (I 
can read many possibilities into the spec.  This is fun!)

The main changes are the additional requirement of the PI, much more 
uncertainty in the language, and the requirement that PIs appear before any 
XSC:ElementDecl elements.  That means I'll have to change Section 2.0 as well, 
coming soon.

As always, the pretty version will be at http://www.purl.org/NET/XSchema/.

Simon St.Laurent
Dynamic HTML: A Primer / XML: A Primer / Cookies

3.0 XSchema and Namespaces

XSchema uses namespaces for its own operations and also supports schemas that 
take advantage of namespace facilities. XSchema processors are responsible 
only for elements that use the XSchema namespace appropriate to the version of 
XSchema they are processing. (This namespace is identified with the prefix 
XSC: throughout this document; see 3.3 below for information about alternative 
prefiexes.) Information in other namespaces may be passed to other 
applications as the processor deems appropriate.

Please note: the information in this section is based on the 18 May 1998 
"Namespaces in XML" Working Draft and is will change to maintain conformance 
with that specification.  Some features in this section are redundant, and 
required at present to make certain the XSchemas will have a high likelihood 
of working in whatever namespace environment develops.

3.1 The XSchema Namespace

XSchemas created using XSchema 1.0 should include the following namespace 
declaration after the XML prolog but before the appearance of DTD information 
and the XSC:XSchema element. This namespace declaration identifies elements 
prefixed with XSC: as elements that should be processed by an XSchema 
processor and also identifies the version number of the XSchema specification 

<?xml:namespace ns="http://www.purl.org/NET/XSchema/v1" prefix="XSC"?>

This declaration is required. XSchema processors must always check for this 
declaration to properly recognize the prefix that will identify XSchema 

3.2 Interaction with Other Namespaces

XSchemas will often support document sets that have their own namespaces. 
Because prefixes may change from document to document, and to provide the 
simplest possible solution, XSchema provides a mechanism for declaring 
namespaces within XSchemas. This allows documents and the XSchemas used to 
verify them to track the same namespace using different prefixes if necessary.

<!ELEMENT XSC:Namespace (Doc?)>
<!ATTLIST XSC:Namespace

The XSC:Namespace element and its contents are very similar to the 
<?xml:namespace?> processing instruction. The attributes of the XSC:Namespace 
element correspond to the prefix, ns, and src productions in the Namespaces 
Working Draft. The ns attribute for the namespace element is the most 
important part, containing a unique identifier that will be used to link the 
elements declared in an XSchema to their counterparts in the document. The ns 
attribute will contain a URI, typically a URL. (Note that #-separated 
identifiers are prohibited in the namespaces draft.) The src attribute can 
supplement the ns attribute if the unique identifier provided is not a URL but 
needs (perhaps) to be retrieved. The prefix attribute provides an identifier 
prefix that will be used throughout the XSchema to identify elements belonging 
to this particular namespace.

The ns attribute contains the key value that will be used to map XSchema 
element declarations to elements instance appearing in documents. So long as 
the ns attributes underlying the (possibly different) prefixes used in the 
XSchema and the document are the same, the mapping should work correctly. If 
namespaces are used which have different ns names, the mapping will be broken 
and the processor should report errors.

All XSC:Namespace elements within an XSchema must appear before the first 
XSC:ElementDecl element.

For interoperability with some interpretations of the Namespaces 
specification, XSchema documents must also be prefixed with namespace 
processing instructions that reflect the information contained in their 
XSC:Namespace elements. It is unclear at this point what processing model 
parsers will use to resolve namespaces, at what point in processing that 
resolution should take place, and what components of an XML document will have 
namespace prefixes resolved by the parser.

*** - Should namespace declarations in a parent XSC:XSchema element hold in 
XSC:XSchema subelements, or should they start over?

3.3 Note Regarding Namespace Usage

Namespaces are still in development at this time, and as such are subject to 
dramatic change.

This specification was written making several assumptions, which may or may 
not prove to be true as the Namespaces draft evolves:

1. The only part of a namespace declaration that genuinely identifies the 
namespace is the ns production. The src is for additional information, and the 
prefix only serves as a proxy for the full ns production. This has several 
implications, the simplest of which allows developers to create XSchemas using 
prefixes other than XSC by specifying a different prefix in the XSchema 
namespace declaration described in Section 3.1.

2. The URLs in a namespace declaration will not need to be retrieved. The 
XSchema namespace declaration uses a PURL (permanent URL) provided by the 
OCLC. (For details on PURLs, visit http://purl.org.) PURLs use redirection to 
maintain a permanent address for sites that may change address. While XSchema 
specification information may be stored at the location to which the PURL 
server redirects visitors, XSchema applications should not rely on any of that 
information being there.

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/
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