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

 


Help: OASIS Mailing Lists Help | MarkMail Help

ubl-ndrsc message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Namespace & versioning


Namespace
=========

I'm very happy with current namespace style in 0p70.  The thing
I'm happy about is that the namespaces of each Reusable and the
7 document classes are all different.  As all of you know that
XML specification only require the namespace values of different 
tagnames that carry different meanings to be *different*.

With that, I'm not exactly certain if encoding a lot of information,
such as the fact that it is an "Invoice" and not an "Order",
and that it belongs to version "0p70" and not "0p65", etc,
is a good or dangerous idea.  Unfortunately I cannot see what
"dangerous" effects such packing of info within the namespace
string have or will have at this point.  Perhaps that's the
reason why I'm waivering a little on this aspect.

The current namespace values in the documents are good to maintain,
however, because the formula that churns them out make each
document class have different namespace string.  This is important.

One comment I read from the inputs that suggests making
all "Order", "OrderAcknowledgement (Simple)", "OrderAcknowlegement
(Complex)" have the same namespace is something I don't quite 
understand.  Maybe I don't quite understand the rational in the
NDR proposed recommendation on namespace naming as well.  
The way it goes, it seems like if a doc class is prefixed
with "Order", it would have to use the "Order" namespace.
This seems strange to me as "Order" and "OrderAcknowledgement"
are documents used by different parties (in fact, exactly
opposing ends of the business communication).  I'm not sure why
(and it doesn't seem to come out from the NDR paper) we're 
aligning the namespace dimension with prefixes, instead of
more ground/end-user oriented factors  such as the fact that
the different doc classes are processed by different validators
on different machines.

I'm inclined to suggest that the existing one-namespace-per-
document-class style be continued.  It's good, it's clear, and
it's distinctive.  I'm much less inclined to pack all information
from document type, version, and any other information into
the namespace string.


Version
=======

Version of UBL schema used, as well as the document type
(ie, whether this instance is a "Order", "Invoice", etc), ought
to be explicit, required, and stand on its own fields.

Imagine the world having UBL v1.0 documents floating around,
and now UBL v2.0 is just introduced and some systems are
generating them but not others.  Packing version info into
namespace will immediate cause many schema-based validators
to throw out v2.0 since that namespace isn't known to v1.0
validators.  It's not clear to me how we can have a smooth 
upgrading of systems, or gradual migration, or more importantly,
gradual degradation where only new, unknown tags in v2.0 are
flagged with errors on v1.0 validators.  By packing version
in namespace strings, we run a risk of disowning the very
flexibility of XML that allows new tags to be introduced
without upsetting existing defined tags.

Packing document type info into the namespace string likewise
force schema-based validators to "try" each and every possible
document class for namespace match before either concluding that
it has a positive match on namespace to validate, or after 
running out all possibilities, to conclude that the instance
is unknown.  There is no need to force the validators to 
explore a potentially huge unknown space of possible namespace
strings if an explicit attribute, such as 

	docType="Order"

is clearly described in the instance.

In short, it seems to me that docType and version are 
meta-info attributes that should be in the UBL space.

Looking from the recipient UBL processor point of view,
a document is unknown and cannot be processed meaningfully
until its version and document type are clear.  The receiving
UBL processor only can expect that it is a UBL document,
of any version of any doc type.  To extract these 2 pieces
of info, it'll have to "look" for the 2 pieces of attribute
in the so-called well-known namespace.  Thus we might need
the instance document to have:

<ublOrder:Order 
   ubl:version="1.0"
   ubl:docType="Order"
   xmlns:ublOrder="urn:oasis:names:tc:ubl:Order"
   xmlns:ubl="urn:oasis:names:tc:ubl">
   ...
</ublOrder:Order>

The well-known, version- and document-invariant namespace
being "urn:oasis:names:tc:ubl", for example.




Best Regards,
Chin Chee-Kai
SoftML
Tel: +65-6820-2979
Fax: +65-6743-7875
Email: cheekai@SoftML.Net
http://SoftML.Net/


On Mon, 28 Apr 2003, Mavis Cournane wrote:

>>The powerpoint of the Opening Sub Committee Reort for the Oasis UBL Naming
>>and Design Rules Sub Committeee is available on the Oasis UBL NDRSC webiste
>>at:
>>http://www.oasis-open.org/committees/download.php/1773/UBL%20Namingand%30Des
>>ignt%20Rules-Opening.ppt
>>This meeting will be going on all through this week, we plan on posting
>>minutes each night for the day's work.
>>
>>Regards
>>Mavis Cournane
>>Cognitran Ltd
>>Co-chair UBL NDR SC
>>
>>



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]