atom feed90 messages in org.xml.lists.xml-devRe: [xml-dev] Pragmatic namespaces
FromSent OnAttachments
Micah DubinkoJul 31, 2009 4:06 pm 
COUTHURES AlainAug 1, 2009 3:35 am 
Amelia A LewisAug 1, 2009 7:43 am 
Kurt CagleAug 2, 2009 11:55 am 
Kurt CagleAug 2, 2009 12:30 pm 
Amelia A LewisAug 2, 2009 6:44 pm 
rjel...@allette.com.auAug 2, 2009 9:07 pm 
Micah DubinkoAug 2, 2009 9:22 pm 
Micah DubinkoAug 2, 2009 9:40 pm 
Dave PawsonAug 2, 2009 11:20 pm 
Michael LudwigAug 3, 2009 8:30 am 
Kurt CagleAug 3, 2009 10:41 am 
Pete CordellAug 3, 2009 11:56 am 
Michael KayAug 3, 2009 1:46 pm 
Kurt CagleAug 3, 2009 4:42 pm 
rjel...@allette.com.auAug 3, 2009 8:39 pm 
Pete CordellAug 4, 2009 12:37 am 
Tim BrayAug 4, 2009 9:44 am 
Micah DubinkoAug 4, 2009 11:17 am 
Micah DubinkoAug 4, 2009 10:55 pm 
Liam QuinAug 4, 2009 11:29 pm 
Dave PawsonAug 5, 2009 12:46 am 
Pete CordellAug 5, 2009 3:17 am 
Tim BrayAug 5, 2009 12:53 pm 
Liam QuinAug 5, 2009 1:46 pm 
Michael KayAug 5, 2009 4:45 pm 
'Liam Quin'Aug 5, 2009 4:50 pm 
Pete CordellAug 6, 2009 12:23 am 
Pete CordellAug 6, 2009 12:36 am 
rjel...@allette.com.auAug 6, 2009 12:58 am 
Michael LudwigAug 6, 2009 1:37 am 
Kurt CagleAug 6, 2009 1:47 am 
rjel...@allette.com.auAug 6, 2009 1:51 am 
Michael KayAug 6, 2009 2:10 am 
Michael KayAug 6, 2009 2:21 am 
Michael KayAug 6, 2009 2:25 am 
Pete CordellAug 6, 2009 2:39 am 
Pete CordellAug 6, 2009 2:46 am 
rjel...@allette.com.auAug 6, 2009 3:08 am 
Pete CordellAug 6, 2009 3:30 am 
Michael KayAug 6, 2009 3:34 am 
Simon St.LaurentAug 6, 2009 5:57 am 
Dave PawsonAug 6, 2009 7:16 am 
47 later messages
Subject:Re: [xml-dev] Pragmatic namespaces
From:Tim Bray (Tim.@Sun.COM)
Date:Aug 4, 2009 9:44:50 am
List:org.xml.lists.xml-dev

On Jul 31, 2009, at 4:06 PM, Micah Dubinko wrote:

Point 1: Any element name with no dots in it is treated as HTML (including HTML rules on handing unrecognized elements)

Requirement: this solution must allow for distributed creation of globally-unique namespace names (including those outside of a consensus process)

Point 2: Any element with one or more dots in it is treated as an extension element. The portion after the last dot is considered the localname, and the the portion up to but not including the last dot is parsed as the pragmatic namespace name (or pname for short).

OK, stop there. Why not just make a clean break with namespaces and do extensibility with java-style dot-separated pathnames? It's trivially easy to understand and offers distributed extensibility for free. Trying to shoehorn it onto existing namespace-aware APIs is going to be awkward and may not buy much.

I'm trying to remember if anybody proposed this Back In The Day, but coming up empty. -T

Interfaces with existing namespace-aware APIs must treat the pname as the namespace URI. With the exception noted below, to prevent clashes pnames must be based on reversed DNS names.

Example: <head> <title>Document title</title> <com.example.project> <com.example.id>123521123</com.example.id> </com.example.project> </head>

In this example document.getElementsByTagName("id") would return the innermost element. So would document.getElementsByTagNameNS("com.example", "id")

Requirement: it is highly desirable to produce a document that will produce the same element names in HTML or XML

Point 3: Zero or more special attributes of the form using.<pname> may appear on the root element, and ONLY on the root element. The declarations have document-wide scope. The pname that appears after "using." is the one being declared. The value of the attribute is a space- separated list of localnames that represent boundary elements, in other words, upon reaching a boundary element, a new namespace gets applied to that element and all children (until encountering another boundary element).

Example equivalent to the previous: <html using.com.example="project"> <head> <project> <id>123521123</id> </project> </head>

This structure will produce the same element names in an XML parser, and a straightforward transformation could convert it to true XML +Namespaces.

Requirement: widely-known namespaces must be parse to an equivalent DOM as xmlns

Point 4: In any extension element with only one dot, the token before the first dot is treated specially. Specifically, there exists a list of grandfathered namespaces, and associated namespace URIs. Interfaces with existing namespace-aware APIs must treat the grandfathered namespace URI as the namespace URI of the extension element.

Here is the list: (additional suggestions welcome)

atom http://www.w3.org/2005/Atom docbook http://docbook.org/ns/docbook html http://www.w3.org/1999/xhtml math http://www.w3.org/1998/Math/MathML/ svg http://www.w3.org/2000/svg xbl http://www.mozilla.org/xbl xbl2 http://www.w3.org/ns/xbl xforms http://www.w3.org/2002/xforms xlink http://www.w3.org/1999/xlink xml http://www.w3.org/XML/1998/namespace

Example:

<html using.math="math">... <p> E.g. <math><msqrt><mi>π</mi></msqrt></math> </p> ...</html>

In this example document.getElementsByTagName("mi") would return the innermost element. So would document.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML/ ", "mi")

Requirement: must support HTML nested inside an extension vocabulary.

Point 5: Unless overridden, HTML documents are treated as if all localnames explicitly listed in the specification are HTML boundary elements.

Example: <html using.svg="svg"> <body> <svg version="1.1" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid slice"> <rect x="10" y="10" width="100" height="150" fill="gray"/> <foreignObject x="10" y="10" width="100" height="150"> <body> <div>Here is a <strong>paragraph</strong>.</div> </body> </foreignObject> </svg> </body> </html>

Here the inner body element and its children are still treated as HTML.

Another example: <html using.xforms="model select1 range secret"> <head> <model>...</model> </head> </body> <xforms.input>... </body> </html>

In this case, "input" is already used as an HTML element name, so uses of it--even with the using statement at the top--need to be explicitly spelled out. Of course, the author could have overridden this by including "input" in the using statement, but then any regular HTML input controls would need to be spelled <html.input>. Just like in Java.

That's the entire proposal.

In practice, it may be inevitable that browser makers might bake in additional defaults, like using.math="math mi mo ms mn mtext" such that users can freely use chosen vocabularies with zero additional markup. Support for this outcome is an additional feature of this proposal.

---

I will be at Balisage this year. If you have comments or ideas, look me up. Comments on this list are welcome as well.

_______________________________________________________________________

XML-DEV is a publicly archived, unmoderated list hosted by OASIS to support XML implementation and development. To minimize spam in the archives, you must subscribe before posting.

[Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/ Or unsubscribe: xml-@lists.xml.org subscribe: xml-@lists.xml.org List archive: http://lists.xml.org/archives/xml-dev/ List Guidelines: http://www.oasis-open.org/maillists/guidelines.php

_______________________________________________________________________

XML-DEV is a publicly archived, unmoderated list hosted by OASIS to support XML implementation and development. To minimize spam in the archives, you must subscribe before posting.

[Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/ Or unsubscribe: xml-@lists.xml.org subscribe: xml-@lists.xml.org List archive: http://lists.xml.org/archives/xml-dev/ List Guidelines: http://www.oasis-open.org/maillists/guidelines.php