W3C home > Mailing lists > Public > xmlschema-dev@w3.org > January 2006

Re: Hiding namespace prefixes in the instance document

From: Antti Sissonen <antti_sissonen@hotmail.com>
Date: Mon, 09 Jan 2006 09:05:05 +0200
Message-ID: <BAY109-F26CD711ED3D79EB7596025E6220@phx.gbl>
To: george@oxygenxml.com
Cc: mike@saxonica.com, xmlschema-dev@w3.org

I wouldn't want to sound too picky about this, but what I expect from the 
xml instance is readability. Having a prefix has an effect on parsing. What 
you suggest below, declaring the namespaces as attributes removes that 
problem but it still looks quite confusing to a business person possibly 
receiving the message. So how do I set up my case so that the element looks 
<MaterialBatchIdentifier>, not
<common:MaterialBatchIdentifier> or
<MaterialBatchIdentifier xmlns="commonNamespace">?

Is there some way to do this so that the common schema has its own separate 
target namespace or do I just switch to include? What would be the downsides 
of that? Not many sources encourage the use of chameleon, that's why I'm 


Antti Sissonen [Antti_Sissonen@hotmail.com]

>You can write documents that contain elements from multiple namespaces 
>without using prefixes, there is no limitation to declare only one 
>namespace as default namespace. So you can have:
><Schema xmlns="schemaNamespace">
>   <Aggregate xmlns="aggregateNamespace">
>     <MaterialBatchIdentifier xmlns="commonNamespace">
>and so on...
>Import keeps the same target namespace for the imported components. Include 
>includes components from a different target namespace. Again, it depends 
>what namespace you want for your elements, that is what you should clarify 
>first then you should think how to write the schema for that.
>George Cristian Bina
><oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
>Antti Sissonen wrote:
>>What I meant was not having namespace prefixes in the instance document 
>>since in this particular case the xml instance presents business content 
>>and the element naming should be exact.
>>So if I am using a common element coming from a common component schema it 
>>should look like this:
>>  <Aggregate>
>>    <MaterialBatchIdentifier>
>>    ...
>>instead of:
>>  <Aggregate>
>>    <common:MaterialBatchIdentifier>
>>Does that help?
>>I've understood that I can get rid of prefixes by using the correct design 
>>(venetian blind) and the default namespace definition (xmlns="foo", not 
>>xmlns:foo="foo") if only one namespace is declared for the instance. But 
>>then if I'd like to have a separate namespace for the common components I 
>>run out of options. Thus, I've concluded that maybe I just have to have 
>>common component schema in no namespace and use include to have it 
>>available (chameleon).
>>If the idea of the schema architecture is to assure that the same name 
>>will not be used for different things the chameleon design would 
>>support/force it. What is it that I'd lose if I switch from import to 
>>> > I have a schema that imports another one. I'm trying to keep
>>> > the namespace
>>> > prefixes hidden in the xml instance
>>>Sorry, I've no idea what you mean. What does a "hidden prefix" look like?
>>>Michael Kay
Received on Monday, 9 January 2006 07:05:18 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 23:15:32 UTC