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]