<html>
<h1>Names in Namespaces are a Triple</h1>

<p>This comment does not effect the operation of namespaces from the current PR,
but it does propose a more elegant analysis and easier-to-understand exposition. 
The length of the current proposal (more than 10 pages) is at odds with the needs
for straightforwardness. In particular, Appendix A2 and A3 would benefit.</p>  

<p>The analysis problem flows from treating the element type name as being
different from other element values, rather than being an anonymous attribute
value. </p>

<p>In the view of many, which I agree with, there is no necessary theoretical 
justification for treating an element type name as being different from attribute
values.  The important property of keying DTD content models for DTD validation, 
but that is a matter of the particular operation of DTD validators, not intrinsic
to the element type names themselves. Indeed, "architectural parsers" use some
other attribute for this purpose; witness further the HTML SDAform attributes.</p>

<p>The unfortunate effect of analyzing the element type name differently from
attribute values is that the namespace PR becomes complicated, and its meaning
unclear. I propose the following analysis and exposition, which would replace 
Appendix A.2 and A.3. There is no need to include any notion of "partitioning".</p> 

<hr/>
<div >
<h2>A.2 Expanded Names</h2>

<p>Expanded names, for the purposes of this specification, are a triple:</p>
<pre>
        [ namespace name, element name,  attribute name]
</pre>
<p>where
 
        <ul><li>namespace name is 
                <ul><li>a URI; or</li>
                <li>empty (i.e. anonymous namespace, -- the URI of the instance document)</li></ul></li>
        <li>element name is 
                <ul><li>the NCName of an element which belongs to the namespace or</li>
                <li>empty  (i.e. the anonymous context -- used for a global attribute)</li></ul></li>
        <li>attribute name is
                <ul><li>an NCName of an attribute, as currently stated or</li>
                <li>empty (i.e. the anonymous attribute -- used for the element type name)</li></ul></li></ul>
</p>
<p>With the meaning:
        <ul><li>[,,,] is the expanded name signifying a document's default namespace</li>
        <li>[,y,] is the expanded name signifying an element y within a document's default namespace</li>
        <li>[,,x] is the expanded name signifying any attribute x within a document's default namespace</li>
        <li>[,y,x] is the expanded name signifying any attribute y of an element x within a document's default 
namespace</li>

        <li>[z,,] is the expanded  name of the namespace signified by URL z</li>
        <li>[z,y,] is the expanded name signifying an element y within namespace z</li>
        <li>[z,,x] is the expanded name signifying any attribute x within namespace z</li>
        <li>[z,y,x] is the expanded name signifying any attribute y of an element x within namespace z</li>
</ul>
</p>

<h2>A.2.1 Example</h2>
<p>Thus the example:</p>
<pre>
&lt;?xml version="1.0"?>
&lt;!-- initially, the default namespace is "books" -->
&lt;book 
        xmlns='urn:loc.gov:books'
        xmlns:isbn='urn:ISBN:0-395-36341-6'>
        &lt;title>Cheaper by the Dozen&lt;/title>
        &lt;isbn:number>1568491379&lt;/isbn:number>
        &lt;notes type="commentary">
                &lt;!-- make HTML the default namespace for some commentary -->
                &lt;p 
                        xmlns='urn:w3-org-ns:HTML'>
                        This is a &lt;i>funny&lt;/i> book!
                &lt;/p>
                &lt;!-- use the default local namespace too -->
                 &lt;local value="override with "/>
        &lt;/notes>
&lt;/book>
</pre>
<p>It contains the following expanded names:</p>
<h3>NAMESPACES:</h3>
<pre>
        ['urn:ISBN:0-395-36341-6', , ]
        ['urn:w3-org-ns:HTML', , ]
        ['urn:loc.gov:books', , ]
</pre>
 <h3>ELEMENTS:</h3>
<pre>
        ['urn:loc.gov:books', book, ]
        ['urn:loc.gov:books', title, ]
        ['urn:loc.gov:books', notes, ]
        ['urn:ISBN:0-395-36341-6', number,]
        ['urn:w3-org-ns:HTML',p, ]
        ['urn:w3-org-ns:HTML',i, ]
        [ ,local, ]
</pre>
<h3>ATTRIBUTES:</h3>
<pre>
        ['urn:loc.gov:books', notes, type]
        [ ,local, type]
</pre>

<h2>A.2.2 Schema for Expanded Names</h2>
<p>A schema for the expanded name is given below, using markup declaration syntax.
<pre>
        &lt;!ELEMENT ename ANY >
        &lt;!ATTLIST ename
                xmlns           CDATA #FIXED "editor: put URI of this document here"
                namespace  CDATA #IMPLIED
                element           NAME  #IMPLIED
                attribute  NAME #IMPLIED >
</pre>

</div>
<hr/>
<p>I believe this version of A.2 and A.3 expresses the intent of the PR
with greater rigour, clarity, power and usefulness than the current text. 

<p>Note that this proposal would allow the definition of Namespace to become simpler:

<i>[Definition:] An XML namespace is a set of composite names, identified by a 
URI reference [RFC2369], which are used in XML documents as element types 
and attribute names.  The composition of these names is detailed in
"A. The Internal Structure of XML Namespaces".</i></p>

<p>Furthermore
I think it might aid the wordsmithing of the final main text, and also prepare better for future 
namespace development. 
For example, extending namespaces to include enumerations
in attribute values can be trivially accomplished by making the expanded name
a quadruple <tt>[ namespace name, element name,  attribute name, enumeration name]</tt>.
I might also say, that it contains no explanatory text which 
may support particular hidden agendas, and so might prove
less contraversial and tedious for the editors and explainers of namespaces
than the current PR.</p>

<p><a href="mailto:ricko@allette.com.au">Rick Jelliffe</a>, 
Computing Center, Academia Sinica, Taipei
</html>