RE: Include multiple complex types into one element ...

> - the element can be reused (so LastName can be used (ref'd) 
> in multiple places)
> 
> - the element is defined in one place (so changing the type 
> of LastName only needs to be done once, not everywhere that it's used)
> 
> - the types are exposed to applications, so you can match on 
> type define variables as that type in schema-aware XSLT or XQuery
> 
> - it follows a consistent style, and turns the upper part of 
> your schema into a data dictionary :)
> 

And one more, if you consistently avoid using local element declarations,
then it's easier to avoid the trap of writing

<xs:element name="person"/>

when you meant

<xs:element ref="person"/>

It's a really nasty mistake to make, because your schema document is valid
and it validates all your valid instances, but it doesn't catch the validity
errors that you intended to catch. That's because <xs:element
name="person"/> defaults to <xs:element name="person" type="xs:anyType"/>

I don't condemn local element declarations entirely, however. But I tend to
apply the rule that if you use a local element declaration then it should
refer to a global type definition.

Michael Kay
http://www.saxonica.com/

Received on Wednesday, 9 July 2008 12:50:21 UTC