index.html
12.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" xmlns="http://www.w3.org/1999/xhtml" xml:lang="EN">
<head>
<meta name="generator" content="HTML Tidy for Linux/x86 (vers 1 September 2005), see www.w3.org" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>The Disposition of Names in an XML Namespace</title>
<style type="text/css">
/*<![CDATA[*/
code { font-family: monospace; }
div.constraint,
div.issue,
div.note,
div.notice { margin-left: 2em; }
ol.enumar { list-style-type: decimal; }
ol.enumla { list-style-type: lower-alpha; }
ol.enumlr { list-style-type: lower-roman; }
ol.enumua { list-style-type: upper-alpha; }
ol.enumur { list-style-type: upper-roman; }
div.exampleInner pre { margin-left: 1em;
margin-top: 0em; margin-bottom: 0em}
div.exampleOuter {border: 4px double gray;
margin: 0em; padding: 0em}
div.exampleInner { background-color: #d5dee3;
border-top-width: 4px;
border-top-style: double;
border-top-color: #d3d3d3;
border-bottom-width: 4px;
border-bottom-style: double;
border-bottom-color: #d3d3d3;
padding: 4px; margin: 0em }
div.exampleWrapper { margin: 4px }
div.exampleHeader { font-weight: bold;
margin: 4px}
p { clear: both }
.prefix { float:left; width: 15%; background: yellow; color: black;
border: solid black thin; padding: .1em; margin-left: 2%;
margin-right: 2%;}
.principle, .constraint, .property, .practice { color: black; border:
solid black thin; padding: .1em; margin-left: 5%; margin-right: 5%; clear: none}
.principle { background: #f7ebd7 }
.constraint { background: #becece }
.property { background: #f7ebd7 }
.practice { background: #dfffff }
pre em { font-style: italic;
font-weight: bold;
}
/*]]>*/
</style>
<link rel="stylesheet" type="text/css" href="http://www.w3.org/StyleSheets/TR/W3C-WD.css" />
<link rel="home" href="http://www.w3.org/" title="W3C" />
<link rel="up" href="http://www.w3.org/TR/" title="TR Page" />
<link rel="contents" title="Table of Contents" href="#table_of_contents" />
<link rel="section" href="#preface" title="1 Preface" />
<link rel="section" href="#namespacedef" title="2 Namespace Definitions" />
<link rel="section" href="#references" title="3 References" />
</head>
<body>
<div class="head">
<p><a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/w3c_home" alt="W3C" height="48" width="72" /></a></p>
<h1><a name="title" id="title"></a>The Disposition of Names in an XML Namespace</h1>
<h2><a name="w3c-doctype" id="w3c-doctype"></a>W3C Working Draft 29 March 2006</h2>
<dl>
<dt>This version:</dt>
<dd><a href="http://www.w3.org/TR/2006/WD-namespaceState-20060329/">http://www.w3.org/TR/2006/WD-namespaceState-20060329/</a></dd>
<dt>Latest version:</dt>
<dd><a href="http://www.w3.org/TR/namespaceState/">http://www.w3.org/TR/namespaceState/</a></dd>
<dt>Editor:</dt>
<dd>Norman Walsh, Sun Microsystems, Inc. <a href="mailto:Norman.Walsh@Sun.COM"><Norman.Walsh@Sun.COM></a></dd>
</dl>
<p>This document is also available in these non-normative formats: <a href="http://www.w3.org/TR/2006/WD-namespaceState-20060329/namespaceState.xml">XML</a>.</p>
<p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2006 <a href="http://www.w3.org/"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>, <a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>, <a href="http://www.keio.ac.jp/">Keio</a>),
All Rights Reserved. W3C <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.</p>
</div>
<hr />
<div>
<h2><a name="abstract" id="abstract"></a>Abstract</h2>
<p>A finding of the W3C Technical Architecture Group (TAG), this document addresses the question of whether or not adding new names to a (published) namespace is a sound practice.</p>
</div>
<div>
<h2><a name="status" id="status"></a>Status of this Document</h2>
<p><em>This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the <a href="http://www.w3.org/TR/">W3C technical reports index</a> at http://www.w3.org/TR/.</em></p>
<p>This is a First Public Working Draft produced by the <a href="http://www.w3.org/2001/tag/">W3C Technical Architecture Group (TAG)</a>. Approved by the TAG at its <a href="http://www.w3.org/2001/tag/2006/01/03-minutes.html#action01">3 January 2006 teleconference</a>, this finding on TAG issue <a href="http://www.w3.org/2001/tag/ilist#nameSpaceState-48">nameSpaceState-48</a> addresses just one of many <a href="/2001/tag/issues.html">TAG issues</a>. The eventual disposition of this text is not clear—one
possibility is it being integrated with other <a href="/2001/tag/findings">TAG findings</a> into a new or a second volume of <a href="/TR/webarch/">Architecture of the World Wide Web</a>.</p>
<p>Please send comments on this finding to the publicly archived TAG mailing list <a href="mailto:www-tag@w3.org">www-tag@w3.org</a> (<a href="http://lists.w3.org/Archives/Public/www-tag/">archive</a>).</p>
<p>Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.</p>
<p>This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 W3C Patent Policy</a>. W3C maintains a <a href="/2001/tag/disclosures" rel="disclosure">public list of any patent disclosures</a> made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains <a href=
"http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the W3C Patent Policy</a>.</p>
</div>
<div class="toc">
<h2><a name="table_of_contents" id="table_of_contents"></a>Table of Contents</h2>
<p class="toc">1 <a href="#preface">Preface</a><br />
2 <a href="#namespacedef">Namespace Definitions</a><br />
3 <a href="#references">References</a><br /></p>
</div>
<hr />
<div class="body">
<div class="div1">
<h2><a name="preface" id="preface"></a>1 Preface</h2>
<p>Namespaces are a mechanism for managing names in a distributed way that greatly reduces the likelihood that two independent parties will create the same name for different purposes.</p>
<p>An XML namespace has a namespace name (a URI) and a set of local names (<a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a>s as defined in <a href="#xml-names">[XML Namespaces]</a>). Using a URI leverages the well-understood <a href="http://www.w3.org/TR/webarch/#uri-assignment">URI allocation</a> mechanisms of <a href="#webarch">[WebArch Vol 1]</a>. <a href="#xml-names">[XML Namespaces]</a> defines a syntactic shorthand for the combination of a namespace name and a local name: the
qualified name, or “QName”. (Note that languages which use QNames as identifiers <a href="http://www.w3.org/TR/webarch/#qname-mapping">are required</a> to provide a mapping from QNames to URIs.)</p>
<p>The proposal to define a new local name, “<code>id</code>”, in the namespace “<code>http://www.w3.org/XML/1998/namespace</code>” (the <code>xml:</code> namespace) raised a question about the identity of a namespace. Concretely, it exposed two perspectives:</p>
<ol class="enumar">
<li>
<p>One perspective was that the <code>xml:</code> namespace consisted of <code>xml:space</code>, <code>xml:lang</code>, and <code>xml:base</code> (and no other names) because there was a point in time in which those where the only three names from that namespace that had a defined meaning.</p>
</li>
<li>
<p>The other perspective was that the <code>xml:</code> namespace consisted of all possible local names and that only a finite (but flexible) number of them are defined at any given point in time.</p>
</li>
</ol>
<p>Colloquially, we often speak of “adding a name” to a namespace. Here we prefer to speak of “defining a name” or otherwise licensing the interpretation of a name. For example, the <a href="#xml-id">[xml:id]</a> specification defines the meaning of the local name “id” in the <code>xml:</code> namespace. Similarly, a namespace created to hold the names of all the reserved words in a programming language would license the interpretation of those QNames without explicitly defining each of them.</p>
<p>The terms <strong>MUST</strong>, <strong>SHOULD</strong>, and <strong>SHOULD NOT</strong> are used in this document in accordance with <a href="#rfc2119">[RFC 2119]</a>.</p>
</div>
<div class="div1">
<h2><a name="namespacedef" id="namespacedef"></a>2 Namespace Definitions</h2>
<p>The publication of <a href="#xml-id">[xml:id]</a> as a <a href="http://www.w3.org/2004/02/Process-20040205/tr.html#RecsW3C">Recommendation</a>, provided a partial answer to the question of which perspective is correct. Adding a definition for the local name “<code>id</code>” in the <code>xml:</code> namespace demonstrated that the number of local names defined in the <code>xml:</code> namespace could be extended.</p>
<p>The question remains, however, as to whether the other position is ever sound. This Finding takes the position that it is.</p>
<p>Namespaces, originally designed to provide names for XML elements and attributes, have been adopted much more broadly by the web community. They are now used not simply for elements and attributes but for function names, tokens, and identifiers for ever more purposes.</p>
<p>The <code>xml:</code> namespace demonstrates that some namespaces benefit from a policy that allows additional names to be defined in them over time. This does not preclude the possibility that some namespaces would benefit from a policy that forbids such extension. From these observations, we conclude that the following good practice applies:</p>
<p class="prefix">Good Practice</p>
<p class="practice">Specifications that define namespaces <strong>SHOULD</strong> explicitly state their policy with respect to changes in the names defined in that namespace.</p>
<p>For namespaces that are not immutable, the specification <strong>SHOULD</strong> describe how names may be given definitions (or have them removed) and by whom.</p>
<p>If a namespace document is provided, as <a href="#webarch">[WebArch Vol 1]</a> recommends, the namespace change policy <strong>SHOULD</strong> be stated in the namespace document.</p>
<p>As a general rule, resources on the web can and do change. In the absence of an explicit statement, one cannot infer that a namespace is immutable.</p>
</div>
<div class="div1">
<h2><a name="references" id="references"></a>3 References</h2>
<dl>
<dt class="label"><a name="rfc2119" id="rfc2119"></a>RFC 2119</dt>
<dd>S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in RFCs to Indicate Requirement Levels</cite></a>. IETF. March, 1997. (See http://www.ietf.org/rfc/rfc2119.txt.)</dd>
<dt class="label"><a name="xml-names" id="xml-names"></a>XML Namespaces</dt>
<dd>Tim Bray, Dave Hollander, Andrew Layman, editors. <a href="http://www.w3.org/TR/REC-xml-names/"><cite>Namespaces in XML</cite></a>. World Wide Web Consortium, 1999. (See http://www.w3.org/TR/REC-xml-names/.)</dd>
<dt class="label"><a name="webarch" id="webarch"></a>WebArch Vol 1</dt>
<dd>Ian Jacobs and Norman Walsh, editors. <a href="http://www.w3.org/TR/webarch/"><cite>Architecture of the World Wide Web, Volume 1</cite></a>. World Wide Web Consortium, 2004. (See http://www.w3.org/TR/webarch/.)</dd>
<dt class="label"><a name="xml-id" id="xml-id"></a>xml:id</dt>
<dd>Jonathan Marsh, Daniel Veillard, and Norman Walsh, editors. <a href="http://www.w3.org/TR/xml-id/"><cite>xml:id Version 1.0</cite></a>. World Wide Web Consortium, 2005. (See http://www.w3.org/TR/xml-id/.)</dd>
</dl>
</div>
</div>
</body>
</html>