List Info

Thread: Problem with tree schema




Problem with tree schema
user name
2007-09-06 05:24:26

HELLO,

 

I HAVE A PROBLEM WHEN I TRY TO GENERATE A JAR FOR AN XML SCHEMA WHICH IS ORGANIZED LIKE A TREE. TO MAKE CLEAR WHAT I MEAN I POST TWO EXAMPLES:

 

FLAT XML SCHEMA:

 

<XS:SCHEMA ATTRIBUTEFORMDEFAULT="UNQUALIFIED"; ELEMENTFORMDEFAULT=&QUOT;QUALIFIED" TARGETNAMESPACE=";HTTP://SOMEURL.ORG&QUOT; XMLNS:XS=&QUOT;HTTP://WWW.W3.ORG/2001/XMLSCHEMA"&GT;

&NBSP; <XS:ELEMENT NAME=";DESCRIPTION">

&NBSP;&NBSP;&NBSP; <XS:COMPLEXTYPE>;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:SEQUENCE>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ELEMENT NAME=";PAGESEQUENCE" />

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; </XS:SEQUENCE>

&NBSP;&NBSP;&NBSP; </XS:COMPLEXTYPE&GT;

&NBSP; </XS:ELEMENT>

&NBSP; <XS:ELEMENT NAME=";PAGESEQUENCE">;

&NBSP;&NBSP;&NBSP; <XS:COMPLEXTYPE>;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:SEQUENCE>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ELEMENT MAXOCCURS="UNBOUNDED" NAME=";PAGE" />

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; </XS:SEQUENCE>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ATTRIBUTE NAME=";NAME" TYPE=";XS:NCNAME&QUOT; USE="REQUIRED&QUOT; />

&NBSP;&NBSP;&NBSP; </XS:COMPLEXTYPE&GT;

&NBSP; </XS:ELEMENT>

&NBSP; <XS:ELEMENT NAME=";PAGE">

&NBSP;&NBSP;&NBSP; <XS:COMPLEXTYPE>;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:SEQUENCE>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ELEMENT MINOCCURS="0&QUOT; MAXOCCURS="UNBOUNDED" NAME=";TEXTFIELD&QUOT; />

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ELEMENT MINOCCURS="0&QUOT; MAXOCCURS="UNBOUNDED" NAME=";TEXTAREA&QUOT; />

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; </XS:SEQUENCE>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ATTRIBUTE NAME=";DESCRIPTION" TYPE=";XS:NCNAME&QUOT; />

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ATTRIBUTE NAME=";NAME" TYPE=";XS:NCNAME&QUOT; USE="REQUIRED&QUOT; />

&NBSP;&NBSP;&NBSP; </XS:COMPLEXTYPE&GT;

&NBSP; </XS:ELEMENT>

&NBSP; <XS:ELEMENT NAME=";TEXTFIELD&QUOT;>

&NBSP;&NBSP;&NBSP; <XS:COMPLEXTYPE>;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ATTRIBUTE NAME=";LABEL"; TYPE=";XS:NCNAME&QUOT; USE="REQUIRED&QUOT; />

&NBSP;&NBSP;&NBSP; </XS:COMPLEXTYPE&GT;

&NBSP; </XS:ELEMENT>

&NBSP; <XS:ELEMENT NAME=";TEXTAREA&QUOT;>

&NBSP;&NBSP;&NBSP; <XS:COMPLEXTYPE>;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ATTRIBUTE NAME=";LABEL"; TYPE=";XS:NCNAME&QUOT; USE="REQUIRED&QUOT; />

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ATTRIBUTE NAME=";ROWS" TYPE=";XS:INT&QUOT; USE="REQUIRED&QUOT; />

&NBSP;&NBSP;&NBSP; </XS:COMPLEXTYPE&GT;

&NBSP; </XS:ELEMENT>

</XS:SCHEMA>

&NBSP;

&NBSP;

TREE XML SCHEMA:

&NBSP;

<XS:SCHEMA ATTRIBUTEFORMDEFAULT="UNQUALIFIED"; ELEMENTFORMDEFAULT=&QUOT;QUALIFIED" TARGETNAMESPACE=";HTTP://SOMEURL.ORG&QUOT; XMLNS:XS=&QUOT;HTTP://WWW.W3.ORG/2001/XMLSCHEMA"&GT;

&NBSP; <XS:ELEMENT NAME=";DESCRIPTION">

&NBSP;&NBSP;&NBSP; <XS:COMPLEXTYPE>;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:SEQUENCE>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ELEMENT NAME=";PAGESEQUENCE">;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:COMPLEXTYPE>;

&NBSP;&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&LT;XS:SEQUENCE>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ELEMENT MAXOCCURS="UNBOUNDED" NAME=";PAGE">

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:COMPLEXTYPE>;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:SEQUENCE>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ELEMENT MINOCCURS="0&QUOT; MAXOCCURS="UNBOUNDED" NAME=";TEXTFIELD&QUOT;>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:COMPLEXTYPE>;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ATTRIBUTE NAME=";LABEL"; TYPE=";XS:STRING&QUOT; USE="REQUIRED&QUOT; />

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; </XS:COMPLEXTYPE&GT;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; </XS:ELEMENT>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ELEMENT MINOCCURS="0&QUOT; MAXOCCURS="UNBOUNDED" NAME=";TEXTAREA&QUOT;>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:COMPLEXTYPE>;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ATTRIBUTE NAME=";LABEL"; TYPE=";XS:STRING&QUOT; USE="REQUIRED&QUOT; />

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ATTRIBUTE NAME=";ROWS" TYPE=";XS:INT&QUOT; USE="REQUIRED&QUOT; />

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; </XS:COMPLEXTYPE&GT;

&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&LT;/XS:ELEMENT>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; </XS:SEQUENCE>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ATTRIBUTE NAME=";NAME" TYPE=";XS:STRING&QUOT; USE="REQUIRED&QUOT; />

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ATTRIBUTE NAME=";DESCRIPTION" TYPE=";XS:STRING&QUOT; USE="OPTIONAL&QUOT; />

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; </XS:COMPLEXTYPE&GT;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; </XS:ELEMENT>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; </XS:SEQUENCE>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; <XS:ATTRIBUTE NAME=";NAME" TYPE=";XS:STRING&QUOT; USE="REQUIRED&QUOT; />

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; </XS:COMPLEXTYPE&GT;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; </XS:ELEMENT>

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; </XS:SEQUENCE>

&NBSP;&NBSP;&NBSP; </XS:COMPLEXTYPE&GT;

&NBSP;&NBSP;</XS:ELEMENT>

</XS:SCHEMA>

&NBSP;

&NBSP;

WHEN I GENERATE A JAR FOR THE FLAT SCHEMA I GET ALL THE CLASSES I NEED (DESCRIPTION, PAGESEQUENCE, PAGE, TEXTFIELD AND SO ON). WHEN I GENERATE A JAR FOR THE TREE-STRUCTURED SCHEMA I GET ONLY ONE CLASS (DESCRIPTION) WITH THE INNER CLASS (INTERFACE) PAGESEQUENCE, WHICH HAS THE INNER CLASS (INTERFACE) PAGE AND SO ON.

&NBSP;

BECAUSE OF BETTER HUMAN READABILITY I WOULD PREFER A TREE-STRUCTURED XML SCHEMA, BUT THE PROGRAMMERS NEED SINGLE CLASSES AND NOT THE NESTED INNER CLASSES.

&NBSP;

IS THERE ANY POSSIBILITY TO CONFIGURE XMLBEANS TO GENERATE A FLAT CLASS STRUCTURE FOR A TREE-STRUCTURED XML SCHEMA?

&NBSP;

THANKS IN ADVANCE,

OLE LAURISCH



RESCO GMBH
GESCHäFTSFüHRER: MICHAEL MöRCHEN
AMTSGERICHT HAMBURG, HRB 76048
UST.IDENT-NR.E208833022

HAFTUNGSAUSSCHLUSS: DIESE NACHRICHT IST AUSSCHLIEßLICH FüR DIE PERSON ODER EINHEIT BESTIMMT, AN DIE SIE GERICHTET IST. SIE ENTHäLT UNTER UMSTäNDEN INFORMATIONEN, DIE UNTER GELTENDEM RECHT VERTRAULICH, GESETZLICH GESCHüTZT ODER VON DER OFFENLEGUNG AUSGESCHLOSSEN SIND. FALLS SIE NICHT DER VORGESEHENE EMPFäNGER ODER VERANTWORTLICH FüR DIE WEITERLEITUNG DIESER NACHRICHT AN DEN VORGESEHENEN EMPFäNGER SIND, IST ES IHNEN STRENGSTENS UNTERSAGT, DIESE NACHRICHT OFFENZULEGEN, ZU VERTEILEN, ZU KOPIEREN ODER IN IRGENDEINER ART ZU BENUTZEN. SOLLTEN SIE DIESE NACHRICHT VERSEHENTLICH ERHALTEN HABEN, BENACHRICHTIGEN SIE BITTE DEN ABSENDER UND LöSCHEN UND VERNICHTEN SIE JEGLICHE KOPIE DAVON, DIE SIE MöGLICHERWEISE ERHALTEN HABEN.

DISCLAIMER: THIS MESSAGE IS INTENDED ONLY FOR THE USE OF THE INDIVIDUAL OR ENTITY TO WHICH IT IS ADDRESSED AND MAY CONTAIN INFORMATION WHICH IS PRIVILEGED, CONFIDENTIAL, PROPRIETARY, OR EXEMPT FROM DISCLOSURE UNDER APPLICABLE LAW. IF YOU ARE NOT THE INTENDED RECIPIENT OR THE PERSON RESPONSIBLE FOR DELIVERING THE MESSAGE TO THE INTENDED RECIPIENT, YOU ARE STRICTLY PROHIBITED FROM DISCLOSING, DISTRIBUTING, COPYING, OR IN ANY WAY USING THIS MESSAGE. IF YOU HAVE RECEIVED THIS COMMUNICATION IN ERROR, PLEASE NOTIFY THE SENDER AND DESTROY AND DELETE ANY COPIES YOU MAY HAVE RECEIVED.
Re: Problem with tree schema
user name
2007-09-06 10:28:13
Hi Ole,
What you are seeing is expected behavior for XMLBeans. The
classes are
generated this way because of the schema design pattern you
are using.
In your Tree xsd you are using the russian doll pattern
while in your
flat file xsd you are using the salami slice pattern.

Here is some additional information on the patterns in case
you are interested.
http://ww
w.xfront.com/GlobalVersusLocal.pdf
http://developer
s.sun.com/jsenterprise/nb_enterprise_pack/reference/techart/
design_patterns.html

In answer to your question:
Is there any possibility to configure XMLBeans to generate a
flat
class structure for a tree-structured xml schema?
Not AFAIK, however you may want to look into the venetian
blind
pattern as you can work 'Type' classes in a manner like you
are
seeking.

Hope this helps,
-Jacob Danner



On 9/6/07, Ole Laurisch <ole.laurischresco.de> wrote:
>
>
>
>
> Hello,
>
>
>
> I have a problem when I try to generate a jar for an
xml schema which is
> organized like a tree. To make clear what I mean I post
two examples:
>
>
>
> Flat xml schema:
>
>
>
> <xs:schema
attributeFormDefault="unqualified"
> elementFormDefault="qualified"
targetNamespace="http://someurl.org"

> xmlnss=&qu
ot;http://www
.w3.org/2001/XMLSchema">
>
>   <xs:element name="description">
>
>     <xs:complexType>
>
>       <xs:sequence>
>
>         <xs:element name="pagesequence"
/>
>
>       </xs:sequence>
>
>     </xs:complexType>
>
>   </xs:element>
>
>   <xs:element name="pagesequence">
>
>     <xs:complexType>
>
>       <xs:sequence>
>
>         <xs:element maxOccurs="unbounded"
name="page" />
>
>       </xs:sequence>
>
>       <xs:attribute name="name"
type="xs:NCName" use="required" />
>
>     </xs:complexType>
>
>   </xs:element>
>
>   <xs:element name="page">
>
>     <xs:complexType>
>
>       <xs:sequence>
>
>         <xs:element minOccurs="0"
maxOccurs="unbounded" name="textfield"
/>
>
>         <xs:element minOccurs="0"
maxOccurs="unbounded" name="textarea"
/>
>
>       </xs:sequence>
>
>       <xs:attribute name="description"
type="xs:NCName" />
>
>       <xs:attribute name="name"
type="xs:NCName" use="required" />
>
>     </xs:complexType>
>
>   </xs:element>
>
>   <xs:element name="textfield">
>
>     <xs:complexType>
>
>       <xs:attribute name="label"
type="xs:NCName" use="required" />
>
>     </xs:complexType>
>
>   </xs:element>
>
>   <xs:element name="textarea">
>
>     <xs:complexType>
>
>       <xs:attribute name="label"
type="xs:NCName" use="required" />
>
>       <xs:attribute name="rows"
type="xs:int" use="required" />
>
>     </xs:complexType>
>
>   </xs:element>
>
> </xs:schema>
>
>
>
>
>
> Tree xml schema:
>
>
>
> <xs:schema
attributeFormDefault="unqualified"
> elementFormDefault="qualified"
targetNamespace="http://someurl.org"

> xmlnss=&qu
ot;http://www
.w3.org/2001/XMLSchema">
>
>   <xs:element name="description">
>
>     <xs:complexType>
>
>       <xs:sequence>
>
>         <xs:element
name="pagesequence">
>
>           <xs:complexType>
>
>             <xs:sequence>
>
>               <xs:element
maxOccurs="unbounded" name="page">
>
>                 <xs:complexType>
>
>                   <xs:sequence>
>
>                     <xs:element
minOccurs="0" maxOccurs="unbounded"
> name="textfield">
>
>                       <xs:complexType>
>
>                         <xs:attribute
name="label" type="xs:string"
> use="required" />
>
>                       </xs:complexType>
>
>                     </xs:element>
>
>                     <xs:element
minOccurs="0" maxOccurs="unbounded"
> name="textarea">
>
>                       <xs:complexType>
>
>                         <xs:attribute
name="label" type="xs:string"
> use="required" />
>
>                         <xs:attribute
name="rows" type="xs:int"
> use="required" />
>
>                       </xs:complexType>
>
>                     </xs:element>
>
>                   </xs:sequence>
>
>                   <xs:attribute
name="name" type="xs:string"
use="required"
> />
>
>                   <xs:attribute
name="description" type="xs:string"
> use="optional" />
>
>                 </xs:complexType>
>
>               </xs:element>
>
>             </xs:sequence>
>
>             <xs:attribute name="name"
type="xs:string" use="required" />
>
>           </xs:complexType>
>
>         </xs:element>
>
>       </xs:sequence>
>
>     </xs:complexType>
>
>   </xs:element>
>
> </xs:schema>
>
>
>
>
>
> When I generate a jar for the flat schema I get all the
classes I need
> (Description, PageSequence, Page, Textfield and so on).
When I generate a
> jar for the tree-structured schema I get only one class
(Description) with
> the inner class (interface) PageSequence, which has the
inner class
> (interface) Page and so on.
>
>
>
> Because of better human readability I would prefer a
tree-structured xml
> schema, but the programmers need single classes and not
the nested inner
> classes.
>
>
>
> Is there any possibility to configure XMLBeans to
generate a flat class
> structure for a tree-structured xml schema?
>
>
>
> Thanks in advance,
>
> Ole Laurisch
>  ________________________________
>  Resco GmbH
>  Geschäftsführer: Michael Mörchen
>  Amtsgericht Hamburg, HRB 76048
>  Ust.Ident-Nr.E2088330
22
>
>  Haftungsausschluss: Diese Nachricht ist
ausschließlich für die Person
> oder Einheit bestimmt, an die sie gerichtet ist. Sie
enthält unter
> Umständen Informationen, die unter geltendem Recht
vertraulich, gesetzlich
> geschützt oder von der Offenlegung ausgeschlossen
sind. Falls Sie nicht der
> vorgesehene Empfänger oder verantwortlich für die
Weiterleitung dieser
> Nachricht an den vorgesehenen Empfänger sind, ist es
Ihnen strengstens
> untersagt, diese Nachricht offenzulegen, zu verteilen,
zu kopieren oder in
> irgendeiner Art zu benutzen. Sollten Sie diese
Nachricht versehentlich
> erhalten haben, benachrichtigen Sie bitte den Absender
und löschen und
> vernichten Sie jegliche Kopie davon, die Sie
möglicherweise erhalten haben.
>
>  Disclaimer: This message is intended only for the use
of the individual or
> entity to which it is addressed and may contain
information which is
> privileged, confidential, proprietary, or exempt from
disclosure under
> applicable law. If you are not the intended recipient
or the person
> responsible for delivering the message to the intended
recipient, you are
> strictly prohibited from disclosing, distributing,
copying, or in any way
> using this message. If you have received this
communication in error, please
> notify the sender and destroy and delete any copies you
may have received.
>

------------------------------------------------------------
---------
To unsubscribe, e-mail: user-unsubscribexmlbeans.apache.org
For additional commands, e-mail: user-helpxmlbeans.apache.org


[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )