It is easy to "loop down" finding all possible substitutions. So for me this optimization could have been left out, because it makes it harder to show the original relations in the schema to the user.

Thanks for your  answer
Dick Deneer


Op 31-jan-2007, om 16:14 heeft Michael Glavassevich het volgende geschreven:

Potential substitution group membership is transitive. Setting aside the conditions for exclusion (e.g. block="substitution"), if B is a member of A's substitution group and C is a member of B's substitution group then C is a member of A's substitution group. That's why "even" appears in the
list returned for "myAbstract".

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: [EMAIL PROTECTED]
E-mail: [EMAIL PROTECTED]

Dick Deneer <[EMAIL PROTECTED]> wrote on 01/29/2007
03:30:11 PM:

I have the following schema

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"; >
    <xsd:element name="root">
       <xsd:complexType>
          <xsd:sequence minOccurs="1">
             <xsd:element ref="myAbstract"/>
          </xsd:sequence>
       </xsd:complexType>
    </xsd:element>
    <xsd:element name="myAbstract" type="AAA" abstract="true"/>
    <xsd:simpleType name="AAA">
       <xsd:restriction base="xsd:integer">
          <xsd:minInclusive value="1"/>
          <xsd:maxInclusive value="9"/>
       </xsd:restriction>
    </xsd:simpleType>
    <xsd:element name="odd" substitutionGroup="myAbstract">
       <xsd:simpleType>
          <xsd:restriction base="AAA">
             <xsd:enumeration value="1"/>
             <xsd:enumeration value="3"/>
             <xsd:enumeration value="5"/>
             <xsd:enumeration value="7"/>
             <xsd:enumeration value="9"/>
          </xsd:restriction>
       </xsd:simpleType>
    </xsd:element>
    <xsd:element name="evenAbstract" substitutionGroup="myAbstract"
abstract="true"/>
       <xsd:element name="even" substitutionGroup="evenAbstract">
          <xsd:simpleType>
             <xsd:restriction base="AAA">
                <xsd:enumeration value="2"/>
                <xsd:enumeration value="4"/>
                <xsd:enumeration value="6"/>
                <xsd:enumeration value="8"/>
             </xsd:restriction>
          </xsd:simpleType>
       </xsd:element>
    </xsd:schema>

So in this schema  element myAbstract is substituted by element odd
or by the abstract element evenAbstract.
Element evenAbstract  is susbstituted by element even.

When I ask the xsModel for the substitution groups of myAbstract I get:
odd
evenAbstract
even

When I ask the xsModel for the substitution groups of evenAbstract I
get:
even

I did not expect  "even" in the susbstition list for myAbstract.  I
know that in fact it is true that you susbtitute "even" for
myAbstract but with this kind of motivation you could also list "odd"
as subsitution for evenAbstract.

So is this right behaviour?

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to