[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: XML Schema complex type restriction
I find the idea of parameterized schemas very interesting, it had never occurred to me. But I think it does not scale out for very complex schemas where the burden of having to anticipate all needs of variation could become overwhelming. Concerning the tiny vocabulary, your scepsis is perhaps based on the assumption that every variant of restriction which is *formally* possible would have to be supported - and yes, that might become overwhelming, too. But in practise - isn't the by far most important form of restriction one of cardinalites - namely, making optional items either absent or mandatory, and constraining potentially multiple items to be single-valued? Add to this a small (and by far not complete) list of further restrictions (e.g. the replacement of simple type uses by uses of a restricted derivative) - and you would probably address 99% of what is desired in most real scenarios? Your pointing out of the "convolutions" is very important - it makes clear, once and for all, that formal restriction as defined by XSD is far too limited to address real world scenarios of profiling data models reliably. Thank you for that. Michael Kay <mike@saxonica.com> schrieb am 16:21 Montag, 25.September 2017: I think there are two main problems with complex type restriction as defined in XSD. Firstly, you have to describe the restricted content model rather than describing the differences (which means the parts that are retained are described in more than one place.) Secondly, what I call "deep restriction" gets incredibly convoluted: for example, if you want to restrict all monetary amounts anywhere within an abc:transaction to be in dollars, then you have to define restrictions of all the intermediate types, most of which will be identical to their base type except that some of the child elements are changed to use a restricted type. Both these problems can be addressed by defining the restrictions using assertions. I think this is how I would normally do it in XSD 1.1. But it's not ideal: if some type has an optional element defined with minOccurs=0 maxOccurs=1, and we want to restrict this in a subtype to be absent, then the ideal syntax would in some way say "the type is the same except that maxOccurs=0" -- which is I think what Hans-Juergen is proposing. I fear though that the "tiny vocabulary" might grow rather larger than is comfortable once you start examining the use cases in detail. You probably need to distinguish cases where the schema is designed to enable restriction, and cases where it is customized by a third party. In the first case, I think my preferred design would be to define generic parameterized types, using constructs like maxOccurs="$transaction-limit", with values for the parameters being supplied in a concrete realization of the type. Michael Kay Saxonica
[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
|