OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] 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

On 25 Sep 2017, at 13:47, Hans-Juergen Rennau <hrennau@yahoo.de> wrote:

"The trouble with restriction is not knowing exactly what the differences are or why."

This is an interesting point. (And I've always avoided restriction of complex types, instinctively.)

Of course it would, in principle, be very easy to specify a restriction step explicitly, using a tiny vocabulary for specifying the removal of optional elements, other cardinality changes and whatever else is needed. Such a "restriction descriptor" might be the input (together with the original schema) for generating the restricted schema, as well as a new from-scratch schema expressing the restrictions. I wonder if there are any proven approaches to this which might be considered good practise? (And how does NIEM treat this question, where restriction of extreme generality should be extremely important?)

With kind regards,

Rick Jelliffe <rjelliffe@allette.com.au> schrieb am 10:01 Montag, 25.September 2017:

You are forced to use a started kitchen sink schema because is standard and therefore will make life easier.

However, most of the elements and attributes are things you dont need. And you know the full schema will blow out implementatuon and confuse testing and anyway YAGNI. 

So you will make profile (Subset) of it using restriction and distribute that. 

But then your schema documents may be bloated. It may be simple just have a parallel validation which just check that only wanted element names are used, using any schema language. 

I.e. In allow elements a,b,c,d,e,f,g,... only chill elements a,b,c,d,e,f,g,... can be used. So the big schema states all the rules. The small one excludes unwanted canes, making it really expect. The trouble with restriction is not knowing exactly what the differences are or why.


On 25 Sep 2017 5:27 PM, "Mukul Gandhi" <gandhi.mukul@gmail.com> wrote:
Hello list,
    Can anyone come up with a useful business use case, to use XML Schema complex type restriction?

Mukul Gandhi

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS