OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Fixing Namespaces in XML; my two cents

[ Lists Home | Date Index | Thread Index ]

On the rare chance that someone might care what I think....

Namespaces seem to be a way to embed (read: bolt) one (or more) XML 
document(s) in another "root" document.  However, I believe that there are 
several problems with the spec:

1) Namespaces can be included in any start tag.  This assumes that a foriegn 
document can be inserted anywhere in the host document.  However, this may 
not always be the case.

2) Both the foriegn documents, the host document and the **total** document 
cannot be easily validated with current DTDs conventions.

3) The whole "namespace name = URI" is confusing and open to interpretation.

How does one overcome these problems?  Well, here's an idea:

Let's say we have host document with the DTD:

<!ELEMENT %hostPrefix;host (%hostPrefix;child1 | %hostPrefix;child2)*>
<!ELEMENT %hostPrefix;child1 #PCDATA>
<!ELEMENT %hostPrefix;child2 #PCDATA>

and the foriegn document:

<!ELEMENT %foriegnPrefix;foriegn (%foriegnPrefix;childA | 
%foriegnPrefix;childB)*>
<!ELEMENT %foriegnPrefix;childA #PCDATA>
<!ELEMENT %foriegnPrefix;childB #PCDATA>

Then we have the document (excuse "pretty" White Space):

<?xml version="1.0"?>
<!DOCTYPE host [
<!--
1. define foriegn prefix "f:"
2. define foriegn dtd for validation
-->
<!ENTITY % foreignPrefix "f:">
<!ENTITY % foreigndtd SYSTEM "http://www.foo.bar";>
<!--
1. define host prefix "" for 'default' namespace
2. define host dtd for validation
3. define where foriegn language can go in
-->
<!ENTITY % hostPrefix "">
<!ENTITY % hostdtd SYSTEM "http://www.food.beer";>
<!ELEMENT % child1 (#PCDATA | f:foriegn)*>
<!--
include the dtds
-->
%hostdtd;
%foriegndtd;
]>
<host>
<child1>blablabla</child1>
<child2>blablabla</child2>
<child1>
<f:foriegn>
<f:childA>blablabla</f:childB>
<f:childB>blablabla</f:childB>
</f:foriegn>
</child1>
</host>

Would that work as an alternate namespace scheme (althought is seems ugly, 
and error-prone too)?

---
Jimmy Cerra
"If the path is set in stone, use a sledgehammer"


_________________________________________________________________
Join the world’s largest e-mail service with MSN Hotmail. 
http://www.hotmail.com





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS