Re: Order indicators in the .xsd file

Expression every possible permutation does not generally work as you 
will get a lot of errors from the unique particle attribution rule that 
will not allow you to say for example
	(a, b, x) | (a, b, y)
forcing you to write
	(a, b, (x | y))
instead.

However, for a complex model getting the right expression is not easy 
and sometimes it may be impossible.

The other possibility not yet mentioned yet is to leave a big unbounded 
choice in XML Schema 1.0 and add additional checks in Schematron, either 
embedded or as a separate Schematron schema.

Best Regards,
George
--
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com

On 10/17/12 5:18 PM, G. Ken Holman wrote:
> At 2012-10-16 15:13 -0700, Fred Li wrote:
>> Hi XML experts,
>>
>> I have a problem about the use of order indicators in the creation of
>> XML schema (.xsd file). As I learned from W3School
>> (http://www.w3schools.com/schema/schema_complex_indicators.asp), we
>> have 3 order indicators in the XML Schema language:
>>
>> All - the child elements can appear in any order, and each child
>> element must occur only once
>> Choice - either one child element or another can occur
>> Sequence - the child elements must appear in a specific order
>>
>> I have an element (for example <asset>) that has 23 child elements,
>> three of them can have more than 1 instances, and 7 of them are
>> required (includes the 3 have more than 1 instances). According to the
>> definition of the order indicators, "sequence" is the only indicator I
>> can use in the XML schema, but I hope there is no order restriction
>> for the appearance of  23 child elements. Do you have any ideas to
>> solve this problem?
>
> Theoretically, you could choose to express every possible permutation in
> a big choice, but it would be untenable to develop and to maintain.  I
> think in W3C Schema 1.0 this is the only way.
>
> Using W3C Schema 1.1 I think you could just allow any number of all of
> them and then assert the cardinality of the ones that have restrictions:
>
>    <xs:choice minOccurs="0" maxOccurs="unbounded">
>      <xs:element ref="a"/>
>      <xs:element ref="b"/>
>      <xs:element ref="c"/>
>      <xs:element ref="d"/>
>      <xs:element ref="e"/>
>      <xs:element ref="f"/>
>      <xs:element ref="g"/>
>      <xs:element ref="h"/>
>      <xs:element ref="i"/>
>      <xs:element ref="j"/>
>      <xs:element ref="k"/>
>      <xs:element ref="l"/>
>      <xs:element ref="m"/>
>      <xs:element ref="n"/>
>      <xs:element ref="o"/>
>      <xs:element ref="p"/>
>      <xs:element ref="q"/>
>      <xs:element ref="r"/>
>      <xs:element ref="s"/>
>      <xs:element ref="t"/>
>      <xs:element ref="u"/>
>      <xs:element ref="v"/>
>      <xs:element ref="w"/>
>      <xs:assert test="
>       count(a) > 1 and count(a) &lt; 4 and count(b) > 1 and count(b)
> &lt; 4 and
>       count(c) > 1 and count(c) &lt; 4 and count(d) = 1 and count(e) = 1
> and
>       count(f) = 1 and count(g) = 1 and count(h) &lt; 2 and count(i)
> &lt; 2 and
>       count(j) &lt; 2 and count(k) &lt; 2 and count(l) &lt; 2 and
>       count(m) &lt; 2 and count(n) &lt; 2 and count(o) &lt; 2 and
>       count(p) &lt; 2 and count(q) &lt; 2 and count(r) &lt; 2 and
>       count(s) &lt; 2 and count(t) &lt; 2 and count(u) &lt; 2 and
>       count(v) &lt; 2 and count(w) &lt; 2"/>
>    </xs:choice>
>
> An alternative answer is not to use W3C Schema and to use the
> "interleave" modeling semantic in ISO/IEC 19757-2 RELAX-NG where you can
> express the following in the compact syntax:
>
>   ( a  & a? & a? & b  & b? & b? & c  & c? & c? & d  & e  & f  & g  & h? &
>     i? & j? & k? & l? & m? & n? & o? & p? & q? & r? & s? & t? & u? & v?
> & w? )
>
> You can see that the end result requires one of a through g (the 7
> required constructs), up to 3 of each of a, b and c, and the rest are
> all optional.  The
> interleave allows them to show up in any order at all.
>
> I hope this helps.
>
> . . . . . . . . . Ken
>
> --
> Contact us for world-wide XML consulting and instructor-led training
> Free 5-hour lecture: http://www.CraneSoftwrights.com/links/udemy.htm
> Crane Softwrights Ltd.            http://www.CraneSoftwrights.com/x/
> G. Ken Holman                   mailto:gkholman@CraneSoftwrights.com
> Google+ profile: https://plus.google.com/116832879756988317389/about
> Legal business disclaimers:    http://www.CraneSoftwrights.com/legal
>
>

Received on Wednesday, 17 October 2012 14:40:16 UTC