[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Micro XSD for Micro XML?
David, A concise regex based expression which looks more arcane then perl ? Or a bloated-down heavy-handed overly designed complicated language in XML which if your lucky GUI app tools can comprehend but no mortals. But I LIKE arcane languages! I've actually asked myself that a lot lately, especially as I'm doing mostly data modeling these days (and have just spent the last three days trying to combine two XML schemas that collectively have more than 1600 elements and were designed by people more skilled in UML than XML).
The problem, ultimately, is that data modeling is a complex undertaking for most enterprise level models, and there's surprisingly little out there that actually talks well about XML data modeling in particular - they'll take about schemas, but not on modeling with XML usage in mind. This means that any model that transcends the boundaries of what can be done with JSON has needs for more of those arcane cases, and knowing where to draw the boundary between simple and complex data models is why data architects can generally get jobs for the asking.
Personally (the regexes aside), I think that concise schemas are generally preferable, even if they aren't necessarily parseable - but they should also be functionally equivalent to those more complex XML schemas. Taking Michael Kay's schema model:
<book category="optional enumeration('children','adult','unknown')">
<title> required string() </title> <author> required string() </author> <IBSN> optional numeric(8,15) </IBSN> <price> required decimal(4,2) </price> </book> and rendering just this in a non-XML notation is pretty straightforward
book
@category:enum( 'children' | 'adult' | 'unknown') ?
title:string author:string
ISBN:numeric(8,5) ? price:decimal(4,2) or book
@category:enum('children' | 'adult' | 'unknown') [0..1]
title:string author:string
ISBN:numeric(8,5) [0..1] price:decimal(4,2) but in either case you are describing a simple structure with no internal references or element reuse beyond repeats. If you're more bracket oriented, the concept doesn't change much, just the notation:
book { @category:enum('children' | 'adult' | 'unknown') [0..1],
title:string, author:string,
ISBN:numeric(8,5) [0..1], price:decimal(4,2) } The challenge comes when you want to build inherited groups or complex types that are utilized throughout a given data structure, and that's one of the big struggles that anyone working with larger data models has to face. Is atomic type a factor? How do you handle inheritance, or do you leave it out of the model?
Finally, and perhaps most importantly, how do you communicate such a data model to a client? book @category:enum('children' | 'adult' | 'unknown') [0..1]
title:string author:string
ISBN:numeric(8,5) [0..1] price:decimal(4,2) is fairly intuitively obvious to a client ([0..1] is equivalent to ? previously) - as i've found when trying to communicate a new structure - and it is often far more communicative than building the equivalent XML structure. Most of my clients, except for those VERY well versed in XML, via XSDs as gobbledy gook - it only makes sense if they can see a diagram.
So, yes, I'd say that if you have a schema language, you should have one that can be represented both in XML (for processing) and in a compact notation that may be more cryptic in complex cases but on the other hand is usually more immediately understandable with a few minutes work.
Kurt Cagle XML Architect Lockheed / US National Archives ERA Project On Fri, Dec 17, 2010 at 4:04 PM, David Lee <dlee@calldei.com> wrote:
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] |
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|