W3C home > Mailing lists > Public > xmlschema-dev@w3.org > June 2008

RE: schema arrangement or architecture

From: Jack Lindsey <tuquenukem@hotmail.com>
Date: Mon, 2 Jun 2008 23:20:15 -0400
Message-ID: <BAY101-W3838296D38157DFFA80504D7BA0@phx.gbl>
To: Andrew Welch <andrew.j.welch@gmail.com>, <xmlschema-dev@w3.org>
In "Salami Slice" only elements are globally declared, while their types are still defined anonymously within the element.  In "Venetian Blind" it is the reverse.  The complex types are defined globally but the elements are declared locally within them.  As you are obviously aware, making both elements and complex types global maximizes reusability opportunities.  I call this Venetian Salami but it is better known as the Garden of Eden style, coined by Eve Maler of Sun Microsystems, and I sing it praises in the first half of this article.
Garden of Eden: The Key to Reuse
1.  Some people like to put all their complex types in an enterprise namespace and reference them from elements declared in small local transactional schemas.  This promotes reuse that can be exploited by OO class hierarchies and allows multiple, local synonyms for standardized data structures.  It has the advantage of not burdening instance files with multiple namespace prefixes since the enterprise namespace is only referenced in the schemas.  However, the reuse is not evident from simply inspecting instance files which may not be ideal in multi-enterprise data exchange scenarios or with those who value transparency.
2.  Some people like to define everything in one namespace but modularize the schema by partitioning it in a number of schema files, which then reference each other with xsd:include statements. This can facilitate memory economies by allowing partitioning by subject matter or commonly needed combinations of elements.  It has the advantage of allowing a change of strategies based on experience without requiring changes of namespace prefixes in instance files but it entails referencing some metadata to determine in which module a given element is declared, unlike option 3.
3.  A heavier duty approach is to partition by namespace and reference components using xsd:import statements.  This a more explicit approach favoured by international vocabulary standards.  Just try to get it all right the first time.
These are only my initial thoughts.  Perhaps it is time for Mr. Costello to revisit his pioneering best practices?
Cheers Jack Lindsey
Extensions in another Namespace

> Date: Mon, 2 Jun 2008 15:15:55 +0100> From: andrew.j.welch@gmail.com> To: xmlschema-dev@w3.org> Subject: schema arrangement or architecture> > > Hi,> > Given the "salami slice" style of schema (all elements and types are> global) are there any established practices for arranging a large> schema? eg> > - try to keep to one large file or break it down into several files?> - ensure all element definitions are always in a single file, or where> possible keep element definitions in the same file as their type> definitions?> - should all attribute be defined globally?> > etc.> > There seems to be quite a lot of information about the different> schema styles out there, but not much on managing a large schema...> (in this case I'm calling a "large" schema one with just over 100> different elements each with their own type... ~150 attributes)> > Is the secret of maintaining a large schema down to good tooling> rather than an intimate knowledge of what's in each file?> > thanks> -- > Andrew Welch> http://andrewjwelch.com> Kernow: http://kernowforsaxon.sf.net/> 
Try Chicktionary, a game that tests how many words you can form from the letters given. Find this and more puzzles at Live Search Games!
Received on Tuesday, 3 June 2008 03:20:56 UTC

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