Hi Ian

Not sure whether you meant "how do I get to the annotations on the local
elements within the definition of the complex type Dia in the schema
below?" or "if I had an annotation directly on the Dia <complexType>
definition itself how would I get to that?". So I've attached some code
(based on your HtmlBuilder class) that will help you do either.

But I agree that the approach to annotations could be clearer so I've
raised a JIRA issue to suggest making improvements -
http://issues.apache.org/jira/browse/XMLBEANS-195.

Cheers,

Lawrence

        // this corresponds to the <complexType> element named Dia
        SchemaAnnotation diaAnn = Dia.type.getAnnotation();
        XmlObject[] diaAppInfo = diaAnn.getApplicationInformation();
        for (int i = 0; i < diaAppInfo.length; i++) {
            GuiDocument gui = null;
            try {
                gui =
GuiDocument.Factory.parse(diaAppInfo[i].toString());
            } catch (XmlException e) {
                e.printStackTrace();
            }
            System.out.println("Dia complex type annotation
getGuiDisplayName() = " + gui.getGui().getDisplayName());
            System.out.println("Dia complex type annotation
getFieldName() = " + gui.getGui().getFieldName());

        }


        // this corresponds to the <sequence> element with the Dia
<complexType>
        SchemaParticle contentModel = Dia.type.getContentModel();

        // getParticleChildren() gives you the local elements:
lanPrefixList and wanPrefixList
        SchemaParticle[] spArray = contentModel.getParticleChildren();
        for (int i=0; i<spArray.length; i++) {

            // from there you can get their annotations as before
            SchemaAnnotation ann2 =
((SchemaLocalElement)spArray[i]).getAnnotation();
            XmlObject[] appInfo2 = ann2.getApplicationInformation();
            for (int j = 0; j < appInfo2.length; j++) {
                GuiDocument gui = null;
                try {
                    gui =
GuiDocument.Factory.parse(appInfo2[j].toString());
                } catch (XmlException e) {
                    e.printStackTrace();
                }
                System.out.println("[diaObject]
gui.getGui().getGuiDisplayName() = " + gui.getGui().getDisplayName());
                System.out.println("[diaObject]
gui.getGui().getFieldName() = " + gui.getGui().getFieldName());

            }
        }


> -----Original Message-----
> From: Butt, Ian [mailto:[EMAIL PROTECTED]
> Sent: Monday, August 29, 2005 12:10 PM
> To: [email protected]; [email protected]
> Subject: RE: Trying to use XMLBeans 2.0 and appinfo
> 
> Thanks Lawrence that certainly got me headed in the right direction.
If
> this is my schema below, I have figured out how to get the main
element's
> app info but how do I go about getting the complex type's annotations
?
> It seems like you can do it fine for global elements since each global
> element gets mapped into a Document class with a type member variable,
but
> complex types seem not to follow this.
> 
> 
> Thanks again,
> 
> Ian
> 
> 
> public class HtmlBuilder {
> 
>     public HtmlBuilder() {
>         DiaDocument dia = DiaDocument.Factory.newInstance();
>         Dia diaObject = dia.addNewDia();
>         diaObject.addLanPrefixList("Lan");
>         diaObject.addWanPrefixList("Wan");
> 
>         SchemaAnnotation ann = ((SchemaLocalElement)
> DiaDocument.type.getContentModel()).getAnnotation();
>         XmlObject[] appInfo = ann.getApplicationInformation();
>         for (int i = 0; i < appInfo.length; i++) {
>             GuiDocument gui = null;
>             try {
>                 gui =
GuiDocument.Factory.parse(appInfo[i].toString());
>             } catch (XmlException e) {
>                 e.printStackTrace();
>             }
>             System.out.println("gui.getGui().getGuiDisplayName() = " +
> gui.getGui().getDisplayName());
>             System.out.println("gui.getGui().getFieldName() = " +
> gui.getGui().getFieldName());
> 
>         }
> 
>         String[] prefixes = dia.getDia().getLanPrefixListArray();
>         for (int i = 0; i < prefixes.length; i++) {
>             String prefix = prefixes[i];
> 
>         }
> 
>     }
> 
>     public static void main(String[] args) {
>         HtmlBuilder hh = new HtmlBuilder();
>     }
> }
> 
> 
> <xs:schema targetNamespace="http://newservice";
> xmlns:app="http://guiextensions"; xmlns:nser="http://newservice";
> xmlns:xs="http://www.w3.org/2001/XMLSchema";
elementFormDefault="qualified"
> attributeFormDefault="unqualified">
>       <xs:complexType name="Dia">
>               <xs:sequence>
>                       <xs:element name="lanPrefixList"
type="xs:string"
> minOccurs="0" maxOccurs="unbounded">
>                               <xs:annotation>
>                                       <xs:appinfo>
>                                               <app:gui>
>
<app:displayName>Lan Prefix
> List</app:displayName>
> 
>       <app:fieldName>lPrefixList</app:fieldName>
>                                               </app:gui>
>                                       </xs:appinfo>
>                               </xs:annotation>
>                       </xs:element>
>                       <xs:element name="wanPrefixList"
type="xs:string"
> minOccurs="0" maxOccurs="unbounded">
>                               <xs:annotation>
>                                       <xs:appinfo>
>                                               <app:gui>
>
<app:displayName>Wan Prefix
> List</app:displayName>
> 
>       <app:fieldName>wPrefixList</app:fieldName>
>                                               </app:gui>
>                                       </xs:appinfo>
>                               </xs:annotation>
>                       </xs:element>
>               </xs:sequence>
>       </xs:complexType>
>       <xs:element name="dia" type="nser:Dia">
>               <xs:annotation>
>                       <xs:appinfo>
>                               <app:gui>
>
<app:displayName>Dia</app:displayName>
>
<app:fieldName>DiaField</app:fieldName>
>                               </app:gui>
>                       </xs:appinfo>
>               </xs:annotation>
>       </xs:element>
> </xs:schema>
> 
> -----Original Message-----
> From: Lawrence Jones [mailto:[EMAIL PROTECTED]
> Sent: Friday, August 26, 2005 4:47 PM
> To: [email protected]; [email protected]
> Subject: RE: Trying to use XMLBeans 2.0 and appinfo
> 
> 
> 
> Hi Ian
> 
> I think the following thread the user mailing list on 7/19/05 -
>
http://mail-archives.apache.org/mod_mbox/xmlbeans-user/200507.mbox/%3c4B
> [EMAIL PROTECTED] will
> help you.
> 
> Cheers,
> 
> Lawrence
> 
> > -----Original Message-----
> > From: Butt, Ian [mailto:[EMAIL PROTECTED]
> > Sent: Friday, August 26, 2005 1:33 PM
> > To: [email protected]; [email protected]
> > Subject: Trying to use XMLBeans 2.0 and appinfo
> >
> > I am trying to use XMLBeans to access some information that is
> contained
> > in my annotation, specifically my appinfo.  Basically I would like
to
> > retrieve the appinfo contents so that I can build a gui dynamically
> and
> > the appinfo contains various information that I would like to build
my
> gui
> > (i.e. textbox, size, display name, etc...)   In the code below
> > schemaType.getAnnotation is empty.
> >
> > import howdy.PurchaseOrderDocument;
> > import org.apache.xmlbeans.XmlObject;
> > import org.apache.xmlbeans.SchemaAnnotation;
> > import org.apache.xmlbeans.SchemaType;
> >
> > public class HtmlBuilder {
> >
> >     public HtmlBuilder() {
> >         PurchaseOrderDocument po =
> > PurchaseOrderDocument.Factory.newInstance();
> >         po.addComment("Hello");
> >
> >
> >         SchemaType schemaType = po.schemaType();
> >         if (schemaType != null) {
> >
> >             if (schemaType.getAnnotation() != null) {
> >                 XmlObject[] appInfo
> > =po.schemaType().getAnnotation().getApplicationInformation();
> >                 SchemaAnnotation.Attribute[] attrs =
> > po.schemaType().getAnnotation().getAttributes();
> >                 for (int i = 0; i < attrs.length; i++) {
> >                     SchemaAnnotation.Attribute attr = attrs[i];
> >                     System.out.println("aa" + attr.getName());
> >                     System.out.println("attr.getValue() = " +
> > attr.getValue());
> >                 }
> >             }
> >         }
> >
> >     }
> >
> >     public static void main(String[] args) {
> >         HtmlBuilder hh = new HtmlBuilder();
> >     }
> > }
> >
> >
> > Is this possible ?  Does anybody have any examples.
> >
> > Thanks,
> >
> > Ian
> >
> >
> > Here is my Schema file:
> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> > xmlns:app="http://howdy/guiextensions";>
> >     <xsd:annotation>
> >             <xsd:documentation xml:lang="en">
> >      Purchase order schema for Example.com.
> >      Copyright 2000 Example.com. All rights reserved.
> >     </xsd:documentation>
> >     </xsd:annotation>
> >     <xsd:element name="purchaseOrder" type="PurchaseOrderType">
> >         <xsd:annotation>
> >                 <xsd:appinfo>
> >                         <app:guiDisplayName>Purchase Order
> >                         </app:guiDisplayName>
> >                 </xsd:appinfo>
> >         </xsd:annotation>
> >     </xsd:element>
> >
> >     <xsd:element name="comment" type="xsd:string">
> >         <xsd:annotation>
> >                 <xsd:appinfo>
> >                         <app:guiDisplayName>Comment
> >                         </app:guiDisplayName>
> >                 </xsd:appinfo>
> >         </xsd:annotation>
> >     </xsd:element>
> >     <xsd:complexType name="PurchaseOrderType">
> >             <xsd:sequence>
> >                     <xsd:element name="shipTo" type="USAddress"/>
> >                     <xsd:element name="billTo" type="USAddress"/>
> >                     <xsd:element ref="comment" minOccurs="0"/>
> >                     <xsd:element name="items" type="Items"/>
> >             </xsd:sequence>
> >             <xsd:attribute name="orderDate" type="xsd:date"/>
> >     </xsd:complexType>
> >     <xsd:complexType name="USAddress">
> >             <xsd:sequence>
> >                     <xsd:element name="name" type="xsd:string"/>
> >                     <xsd:element name="street" type="xsd:string"/>
> >                     <xsd:element name="city" type="xsd:string"/>
> >                     <xsd:element name="state" type="xsd:string"/>
> >                     <xsd:element name="zip" type="xsd:decimal"/>
> >             </xsd:sequence>
> >             <xsd:attribute name="country" type="xsd:NMTOKEN"
> fixed="US"/>
> >     </xsd:complexType>
> >     <xsd:complexType name="Items">
> >             <xsd:sequence>
> >                     <xsd:element name="item" minOccurs="0"
> > maxOccurs="unbounded">
> >                             <xsd:complexType>
> >                                     <xsd:sequence>
> >                                             <xsd:element
> name="productName"
> > type="xsd:string"/>
> >                                             <xsd:element
> name="quantity">
> >                                                     <xsd:simpleType>
> >
> <xsd:restriction
> > base="xsd:positiveInteger">
> >
> <xsd:maxExclusive
> > value="100"/>
> >
> </xsd:restriction>
> >
> </xsd:simpleType>
> >                                             </xsd:element>
> >                                             <xsd:element
> name="USPrice"
> > type="xsd:decimal"/>
> >                                             <xsd:element
> ref="comment"
> > minOccurs="0"/>
> >                                             <xsd:element
> name="shipDate"
> > type="xsd:date" minOccurs="0"/>
> >                                     </xsd:sequence>
> >                                     <xsd:attribute name="partNum"
> type="SKU"
> > use="required"/>
> >                             </xsd:complexType>
> >                     </xsd:element>
> >             </xsd:sequence>
> >     </xsd:complexType>
> >     <!-- Stock Keeping Unit, a code for identifying products -->
> >     <xsd:simpleType name="SKU">
> >             <xsd:restriction base="xsd:string">
> >                     <xsd:pattern value="\d{3}-[A-Z]{2}"/>
> >             </xsd:restriction>
> >     </xsd:simpleType>
> > </xsd:schema>
> >
> > Here is my guiextensions schema file:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xs:schema
> > xmlns:gx="http://www.metasolv.com/serviceactivator/guiextensions";
> >
>
targetNamespace="http://www.metasolv.com/serviceactivator/guiextensions";
> > xmlns:xs="http://www.w3.org/2001/XMLSchema";
> elementFormDefault="qualified"
> > attributeFormDefault="unqualified">
> >     <xs:element name="guiDisplayName" type="xs:string"/>
> > </xs:schema>
> >
> >             Ian Butt
> >             Senior Software Designer, MetaSolv IP Service Activator
> >             MetaSolv Software
> >             360 March Road
> >             Ottawa, ON
> >             Office Phone:  613-287-8182
> >             E-mail: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
> >
> >             ++++++CONFIDENTIALITY NOTICE+++++
> >             The information in this email may be confidential and/or
> > privileged. This email is intended to be reviewed by only the
> individual
> > or organization named above. If you are not the intended recipient
or
> an
> > authorized representative of the intended recipient, you are hereby
> > notified that any review, dissemination or copying of this email and
> its
> > attachments, if any, or the information contained herein is
> prohibited. If
> > you have received this email in error, please immediately notify the
> > sender by return email and delete this email from your system.
> >
> >
> >
---------------------------------------------------------------------
> > 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]



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

Reply via email to