[
Lists Home |
Date Index |
Thread Index
]
Christian:
| Of course a purist global complex type schema can be hard to
| stick to, so in organisations where I have put in place
| schema design guidelines, I usually put down the following:
| - No global elements except candidate root elements
| - No inline anonymous type definitions, all elements must
| reference a
| global type except containers for repeating constructs
| because they are
| so simple, e.g. businessCenters containing businessCenter*
|
| p.s. To be fair, most of these schemas were on the large
| side (hundreds of types or more). The consequence of the
| strict guidelines was good reuse, the ability to create a
| glossary, no hidden information, and so on... the design
| guidelines were enforced using an XSLT stylesheet that
| created a quality report.
I see a tendency to maintain data definitions within repositories, and
generate Schema's from those. HL7 does this, and so does the Dutch Criminal
Justice Chain. In such cases, global types are not necessary for reuse since
reuse is done on repository items. Generated Schemas are only validation /
documentation tools, so the whole Russian doll vs. re-use discussion
evaporates.
HL7 still uses global types and a separate vocabulary Schema, but I do not
really like it. A 'flat' Schema with one global element (the root) and only
anonymous types reflects the message content as well and is more readable.
It's even possible to generate multiple Schema variants each of which
validates exactly the same class of XML instances - though it would be hard
to prove except for simple cases whether they really do.
Regards,
Marc
Marc de Graauw
Eerste Looiersdwarsstraat 19
1016 VL Amsterdam
The Netherlands
+31 (20) 6123281
+31 (6) 53146724
www.marcdegraauw.com
|