Hi,

This is supported, but it's on the advanced list of usages of XmlBeans.

Your best option is to parse the schema files and corectly create the
SchemaTypeSystem. See documentation
http://xmlbeans.apache.org/docs/2.0.0/guide/conIntroToTheSchemaTypeSystem.html
 and previous discussions  on this list, for example:
http://www.mail-archive.com/user@xmlbeans.apache.org/msg01864.html
http://www.mail-archive.com/user@xmlbeans.apache.org/msg03173.html

From it you'll be able to find all the info you'll have in the schema.
We use it to do the validation or the generation of the java source also
editors can use this info for error detecting and completion.


Cezar


On Tue, 2013-01-15 at 05:55 -0800, badger mailinglist wrote:
> Thanks Paul and Jacob, I guess I didn't quite read through the
> tutorials far enough. It's all working now I'm *actually* compiling
> the xsd.
> 
> Thanks again,
> 
> Badger.
> 
> 
> On 14 January 2013 23:27, Paul Gillen <paul.d.gil...@gmail.com> wrote:
>         Boy, I wish I got paid for this crap.
>         
>          
>         
>         Full answer here:
>         
> http://www.oracle.com/technetwork/articles/entarch/incremental-compilation-xmlbeans-089127.html
>         
>          
>         
>         In your first example you had compiled your schema and created
>         an object to describe parsed XML.
>         
>          
>         
>         In you second example you parsed the XSD, which is after all
>         XML, and, surprise, it’s described by W3C XSD.
>         
>          
>         
>         What you want to do, and I would be interested in hearing why,
>         is to compile the XSD on the fly.
>         
>          
>         
>         The output of the example below is:
>         
>         D=TestSchema
>         
>         D=schema@http://www.w3.org/2001/XMLSchema
>         
>         D=TestSchema
>         
>         where the first is your first example, the second is your
>         second example, and the third is from compiling the XSD on the
>         fly.
>         
>          
>         
>         Hope this helps.
>         
>          
>         
>         Cheers,
>         
>         Paul
>         
>          
>         
>         package com.riveralph;
>         
>          
>         
>         import java.io.File;
>         
>          
>         
>         import noNamespace.TestSchemaDocument;
>         
>          
>         
>         import org.apache.xmlbeans.SchemaTypeLoader;
>         
>         import org.apache.xmlbeans.SchemaTypeSystem;
>         
>         import org.apache.xmlbeans.XmlBeans;
>         
>         import org.apache.xmlbeans.XmlObject;
>         
>         import org.apache.xmlbeans.XmlOptions;
>         
>         import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument;
>         
>          
>         
>         public class TestSchema {
>         
>               public static void main(String[] args) throws Exception
>         {
>         
>                     TestSchema ts = new TestSchema();
>         
>                     ts.go(args);
>         
>               }
>         
>          
>         
>               private void go(String[] args) throws Exception {
>         
>                     {
>         
>                           XmlObject instance =
>         TestSchemaDocument.Factory.newInstance(new XmlOptions());
>         
>                           System.out.println(instance.schemaType());
>         
>                     }
>         
>          
>         
>                     {
>         
>                           SchemaTypeLoader loader =
>         
> XmlBeans.typeLoaderForClassLoader(SchemaDocument.class.getClassLoader());
>         
>                           XmlObject instance = loader.parse(new
>         File("xsd/testschema.xsd"),null, new XmlOptions());
>         
>                           System.out.println(instance.schemaType());
>         
>                     }
>         
>          
>         
>                     {
>         
>                           XmlObject[] schemaObj = new XmlObject[]
>         { XmlObject.Factory.parse(new File("xsd/testschema.xsd"))};
>         
>                           SchemaTypeSystem schemaTypeObj =
>         XmlBeans.compileXmlBeans(null, null, schemaObj, null, null,
>         null, null);
>         
>                           XmlObject instance =
>         schemaTypeObj.newInstance(schemaTypeObj.documentTypes()[0],
>         null);
>         
>                           System.out.println(instance.schemaType());
>         
>                     }
>         
>          
>         
>               }
>         
>         }
>         
>          
>         
>          
>         
>         From: badger mailinglist
>         [mailto:badger.mailing.l...@gmail.com] 
>         Sent: Monday, January 14, 2013 6:35 AM
>         To: user@xmlbeans.apache.org
>         Subject: Re: Converting from using scomp to
>         SchemaTypeLoader.parse(...)
>         
>          
>         
>         Ok, so I guess no one has ever tried this.
>         
>         Maybe there's a simpler question:
>         
>         If I use the SchemaTypeLoader.parse method, I struggle to get
>         information about the schema from that object. I want to
>         iterate through the attributes and elements declared in the
>         XSD I'm parsing, but all I seem to get is w3 xml schema stuff.
>         Am I trying to do something that isn't supported, or am I just
>         doing it wrong?
>         
>         Any help much appreciated,
>         
>         Cheers,
>         
>         Badger.
>         
>         On 8 January 2013 15:42, badger mailinglist
>         <badger.mailing.l...@gmail.com> wrote:
>         
>         Hi,
>         
>         Currently, I take some XSDs (see below for example), generate
>         classes for them (with scomp -out generatedClasses.jar
>         testschema.xsd), then use those classes in code with some
>         like:
>         final XmlObject instance =
>         TestSchemaDocument.Factory.newInstance(xmlOptions);
>         
>         This process now needs to be a bit more dynamic, so I'm trying
>         to use something more like the following:
>         
>         final SchemaTypeLoader loader =
>         
> XmlBeans.typeLoaderForClassLoader(SchemaDocument.class.getClassLoader());
>         XmlOptions xmlOptions = new XmlOptions();
>         final XmlObject fileParsedInstance = loader.parse(new File("C:
>         \\testschema.xsd"), null, new XmlOptions());
>         
>         
>         However, I would expect the XmlObject returned in both cases
>         to be the same. However, if I recursively iterate through the
>         properties of these two objects, I get different results i.e.
>         calling instance.schemaType().getProperties() gets different
>         results in each of the cases.
>         For the instance loaded from the class the getProperties()
>         method returns one element with type 'TestSchema', which
>         itself returns one element with type 'TestType' and so on as
>         you recur.
>         For the instance loaded directly from the xsd file the
>         properties are all things like E=restriction|
>         D=restriction@http://www.w3.org/2001/XMLSchema, which has a
>         property T=localSimpleType@http://www.w3.org/2001/XMLSchema,
>         which has a property 'restriction' and so on infinitely.
>         
>         I've assumed that these two methods of loading the schema
>         would do the same thing, but it looks like I'm wrong, can
>         someone point me at the method call I need to make to load
>         from the file properly? I'm using XmlBeans 2.5.0.
>         
>         Thanks!
>         
>         
>         Example xsd I'm testing this with:
>         
>         <?xml version="1.0" encoding="utf-8"?>
>         <xs:schema attributeFormDefault="unqualified"
>         elementFormDefault="qualified"
>         xmlns:xs="http://www.w3.org/2001/XMLSchema";>
>         
>           <xs:element name="TestSchema" type="TestType" />
>           
>           <xs:complexType name="TestComplexType">
>             <xs:sequence>
>               <xs:element type="xs:string" name="thing" />
>             </xs:sequence>
>           </xs:complexType>
>           
>           <xs:complexType name="TestType">
>             <xs:sequence>
>               <xs:element type="TestComplexType" name="TestComplex"
>               maxOccurs="unbounded" minOccurs="0" />
>             </xs:sequence>
>           </xs:complexType>
>           
>         </xs:schema>
>         
>         
>          
>         
>         
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@xmlbeans.apache.org
For additional commands, e-mail: user-h...@xmlbeans.apache.org

Reply via email to