Hi Jeff,

What you are getting from the XSModel is consistent with the definition of
the {content type} in the XML Schema 1.0 spec. For an extension it's a
sequence of two particles; a particle for the base content followed by a
particle containing the effective content [1] from the extension. Below the
anchor [1] you'll see the formal definition in 3.2.3.

Thanks.

[1] http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-exg

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: mrgla...@ca.ibm.com
E-mail: mrgla...@apache.org

Jeff Greif <jeff.gr...@gmail.com> wrote on 09/18/2010 01:35:46 AM:

> When using the Xerces 2.8.1 XML Schema API, the derived type from this
> schema:
>
> <?xml version="1.0" ?>
> <schema xmlns="http://www.w3.org/2001/XMLSchema";
>         targetNamespace="urn:webalo:try-extension"
>         xmlns:tns="urn:webalo:try-extension">
>
>     <element name="root" type="tns:Derived"/>
>
>     <complexType name="Base">
>         <sequence>
>             <element name="a" type="string"/>
>             <element name="b" type="string"/>
>         </sequence>
>     </complexType>
>
>     <complexType name="Derived">
>         <complexContent>
>             <extension base="tns:Base">
>                 <sequence>
>                     <element name="c" type="string"/>
>                     <element name="d" type="string"/>
>                     <element name="e" type="string"/>
>                 </sequence>
>             </extension>
>         </complexContent>
>     </complexType>
> </schema>
>
> is represented in that API as though it had content model:
>
>     <complexType name="Derived">
>    <sequence>
>           <sequence>
>             <element name="a" type="string"/>
>             <element name="b" type="string"/>
>           </sequence>
>      <sequence>
>             <element name="c" type="string"/>
>             <element name="d" type="string"/>
>             <element name="e" type="string"/>
>           </sequence>
>        </sequence>
>     </complexType>
>
> rather than what I would have naively thought:
>
>     <complexType name="Derived">
>    <sequence>
>             <element name="a" type="string"/>
>             <element name="b" type="string"/>
>             <element name="c" type="string"/>
>             <element name="d" type="string"/>
>             <element name="e" type="string"/>
>        </sequence>
>     </complexType>
>
> That is, the XSModelGroup representing the content of the type has two
> particles, each of which has a term which is an XSModelGroup, one with
> two and one with three particles.
>
> I have a test program to demonstrate this, if it is needed.
>
> Is this expected behavior and is it documented somewhere?
>
> What I've found elsewhere includes:
>
> a.  "A complex type which extends another does so by having additional
> content model particles at the end of the other definition's content
> model, or by having additional attribute declarations, or both."
>
> from XML Schema 1.0 Second Edition, section 2.2.1.3, which seems to
> suggest the form I had expected.
>
> b.  On the other hand, the infoset description, 3.4.1 which suggests
> there is a separate "base type definition" and "content type" which
> contains a content model, which could suggest the nested form found in
> my test.
>
> c.  The documentation for the XSComplexTypeDefinition.getParticle()
> method refers to "A particle for a mixed or element-only content
model...".
>
> Thanks for any illumination.
>
> Jeff
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: j-users-unsubscr...@xerces.apache.org
> For additional commands, e-mail: j-users-h...@xerces.apache.org

Reply via email to