Hi Maryam,

Sounds about right, except that for (4) any element can be given a more specific type than in the base type definition (so an element typed as xs:string could instead be made xs:token, for instance), and for (5) an xs:any with maxOccurs > 1 could be replaced by multiple elements (or elements and a new xs:any).

 - Dennis

Dennis M. Sosnoski
SOA, Web Services, and XML
Training and Consulting
http://www.sosnoski.com - http://www.sosnoski.co.nz
Seattle, WA +1-425-296-6194 - Wellington, NZ +64-4-298-6117



Maryam Moazeni wrote:
Hi All, Regarding the implementation of the support for complex content restriction: I need to know in what cases an element could be restricted. I have some observations, but I'd like to see if any one can add more to this. 1) Removal of an optional element.
2) Reducing the "maxOccurs".
3) Increasing the "minOccurs".
4) Giving an element a specific type, in the case the element has "anyType" as its type
    in the base type.
5) In the case we have "any" in the base type, and we restrict the elements by attributes
    of "any" such as "minOccurs" and "maxOccurs".
Please correct me if I'm wrong and add your opinions. For implementing this I thought I should check all the elements listed in the restricted type with elements of the base type for the named conditions, if any of them differs, the element goes to the list of restricted elements. Also, I thought with any approach that I choose, I have to edit the DOM tree created from populating the parent meta info. But, it seems the Element root = model.getDocumentElement(); return null when I'm trying to access the model's root element. In my approach, I thought maybe I can add "restricted" node to the root node, per restricted elements and also edit the "property" nodes according to the restricted elements to make sure that they're not marked as "isInherited" or maybe we can remove them from the tree. Also I need to know what will happen in the case, base type is of type "anyType"? I would appreciate if you share your thoughts with me. Thanks,
Maryam

On 7/4/06, *Maryam Moazeni* <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:

    Hi Dennis,
That's what I wanted to make sure !!! Thanks. Maryam

On 7/4/06, *Dennis Sosnoski* <[EMAIL PROTECTED]
    <mailto:[EMAIL PROTECTED]>> wrote:

        Hi Maryam,

        This isn't a valid case. The only way to get complexContent from a
        simpleType is by using extension (since restriction says that
        you're
        only going to allow a subset of what the base type allows -
        which means
        that the restriction of a simpleType is always going to be
        simpleContent). Just to be sure, I tried this in Oxygen:

        <?xml version=" 1.0" encoding="UTF-8"?>
        <schema xmlns="http://www.w3.org/2001/XMLSchema";
        targetNamespace="urn:a"
        xmlns:tns="urn:a">
        <simpleType name="x">
           <restriction base="decimal">
             <minExclusive value="0.0"/>
             <maxExclusive value ="100.0 "/>
           </restriction>
        </simpleType>

        <complexType name="y">
           <complexContent>
             <restriction base="tns:x">
               <minExclusive value=" 1.0"/>
             </restriction>
           </complexContent>
        </complexType>
        </schema>

        It gave the expected error:

        SystemID: /usr/local/tools/oxygen6.2/Untitled1.xsd
        Location: 12:33
        Description: E src-ct.1: Complex Type Definition
        Representation Error
        for type 'y'.  When <complexContent> is used, the base type
        must be a
        complexType. 'x' is a simpleType.
        URL: http://www.w3.org/TR/xmlschema-1/#src-ct

        - Dennis

        Dennis M. Sosnoski
        SOA, Web Services, and XML
        Training and Consulting
        http://www.sosnoski.com <http://www.sosnoski.com/> -
        http://www.sosnoski.co.nz <http://www.sosnoski.co.nz/>
        Seattle, WA +1-425-296-6194 - Wellington, NZ +64-4-298-6117



        Maryam Moazeni wrote:
        > Hi Ajith,
        >
        > actually I meant something else, I think what u mentioned
        here is a
        > SimpleTypeRestriction which I think is handeled in
        > processSimpleSchemaType(...), I'm not sure though. Please
        correct me
        > if I'm wrong.
        >
        > But what I asked is the case of Complex Content when:
        >
        > *restriction.getBaseTypeName() instanceof XmlSchemaSimpleType*
        >
        > For example:
        >
        > <simpleType name="x">
        >       <restriction base="number">
        >            <minExlusive value="0.0"/>
        >            <maxExlusive value =" 100.0"/>
        >       </restriction>
        > </simpleType>
        >
        > <complexType name="y">
        >     <complexContent>
        >        *<restriction base="tns:x">*
        > *          ....*
        > *       *</restriction>
        >      </complexContent>
        > </complexType>
        >
        > I'd like to know what will happen in this case.
        >
        > Thanks,
        > Maryam
        >
        >
        > On 7/4/06, *Ajith Ranabahu* < [EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>
        > <mailto: [EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>>> wrote:
        >
        >     Hi Maryam,
        >     What I thought as appropriate for the simple type is to
        wrap the
        >     necessary type in class and build the restriction logic
        into that
        >     class.
        >     For example think of a restriction based on xs:string
        with a pattern
        >     like the following
        >
        >     <xs:simpleType name="myType">
        >            <xs:restriction base="xs:string">
        >                     <xs:pattern value="\d"/>
        >            </xs:restriction>
        >     </xs:simpleType>
        >
        >     for this I suggest we generate a class MyType that wraps a
        >     java.lang.string. For the setter we can inserts a reg exp
        based
        >     checker that throws an exception (??) for a wrong value .
        How does
        >     that sound :)
        >
        >
        >     Ajith
        >
        >     On 7/4/06, Maryam Moazeni <[EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>
        >     <mailto: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>>
        wrote:
        >     >
        >     > Hi all,
        >     >
        >     > Regarding the complex content restriction:
        >     >
        >     > In the case that the restriction base type is a complex
        type,
        >     the derived
        >     > class overrides the getter and setter corresponding to
        >     restricted elements,
        >     > but how about when the restriction base type is a
        simple type?
        >     simple types
        >     > doesn't have elements !!
        >     >
        >     > in the current implementation for the extension of a
        simple
        >     type, the
        >     > derived class extends " org.apache.axiom.om.OMElement "
        and its
        >     elements are
        >     > added to the class.
        >     > but seems there's a different story for restriction.
        >     >
        >     > Any Thoughts?
        >     >
        >     > Thanks,
        >     >
        >     > Maryam
        >     >
        >     >
        >     >
        >     > >
        >     > >
        >     > >
        >     > >
        >     > >
        >     > > Hi Ajith,
        >     > >
        >     > >
        >     > > Thanks for sharing your thoughts,
        >     > >
        >     > > For (1), (2) I was thinking of what you mentioned.
        So, you say we
        >     > shouldn't have the
        >     > > real Java inheritance here because of the existence of
        >     primitive types,
        >     > right?
        >     > >
        >     > >
        >     > > Well, I have already started testing some simple
        schemas with the
        >     > XMLBeans. That seems to be the only source for me :)
        >     > >
        >     > > Thanks,
        >     > >
        >     > >
        >     > > Maryam
        >     > >
        >     > >
        >     > >
        >     > >
        >     > > On 6/22/06, Ajith Ranabahu < [EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>
        >     <mailto:[EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>> > wrote:
        >     > >
        >     > > > Hi Maryam,
        >     > > > I've had the thoughts for the supporting of simple
        content
        >     extension
        >     > > > and restriction and complex content restriction (We
        already
        >     support
        >     > > > complex content extension partially)
        >     > > >
        >     > > > 1. simple content extension
        >     > > > This should generate a seperate class that contains
        the base
        >     type as
        >     > > > a field. for the variations, there would be  other
        fields
        >     generated
        >     > > > into the class (say in the case of attributes).
        Note that
        >     extending
        >     > > > the classes would not work since there can be java
        >     primitives (like
        >     > > > int and boolean) and even if mapped to a class the
        class may
        >     not be
        >     > > > extensible (like the java.lang.String which is final)
        >     > > >
        >     > > > 2.  simple content restriction
        >     > > > This should be the same as the extension case but
        now it
        >     would have
        >     > > > conditions generated into the the setter method of
        the base
        >     field. Say
        >     > > > in the case of enums there should be a list of
        constants and the
        >     > > > constants should be checked against the input value
        when
        >     setting the
        >     > > > value. Similar check can be done for the regular
        expressions.
        >     > > >
        >     > > > 3. Complex content restriction
        >     > > >   Hmm... this is somewhat tricky. What I see is
        that we can
        >     extend
        >     > > > the generated class just like for extension but
        overrride
        >     the setters
        >     > > > depending on the restriction.
        >     > > >
        >     > > > One thing you can do is to see what XMLbeans does
        for this.
        >     Only thing
        >     > > > is they generate classes all over the place (:)) and it
        >     might be a bit
        >     > > > hard to figure out what is what :)
        >     > > >
        >     > > > Others please add your thoughts into this.
        >     > > >
        >     > > > Ajith
        >     > > >
        >     > > > On 6/21/06, Maryam Moazeni < [EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>
        >     <mailto: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>>
        wrote:
        >     > > > >
        >     > > > >
        >     > > > > Hi All,
        >     > > > >
        >     > > > > I'm doing a project for improving ADB for Google
        Summer of
        >     Code,
        >     > > > > At this point, I'm trying to implement the
        >     > > > >
        >     > > > > Simple Content Restriction and Extension
        >     > > > > Complex Content Restriction and Extension
        >     > > > > I'd like to receive sugestions from Axis2
        Developers for
        >     implementing
        >     > these
        >     > > > > features.
        >     > > > > Any suggestions?
        >     > > > >
        >     > > > > Thanks,
        >     > > > >
        >     > > > >
        >     > > > > Maryam Moazeni
        >     > > >
        >     > > >
        >     > > > --
        >     > > > Ajith Ranabahu
        >     > > >
        >     > > >
        >     >
> ---------------------------------------------------------------------

        >     > > > To unsubscribe, e-mail:
        >     > [EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>
        >     <mailto: [EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]> >
        >     > > > For additional commands, e-mail:
        [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
        >     <mailto: [EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>>
        >     > > >
        >     > > >
        >     > >
        >     > >
        >     > >
        >     >
        >     >
        >
        >
        >     --
        >     Ajith Ranabahu
        >
> ---------------------------------------------------------------------

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

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




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

Reply via email to