in other words:
I am still running into an issue creating an inner (anonymous) complex type
like in the schema above:

for simpleTypes I can do it like that: 

elementType = schema.createSimpleType(null,
simpleTypesFactory.getBuiltInType(simpleTypesFactory
                    .getBuiltInTypeName(SimpleTypesFactory.STRING_TYPE)));

but when creating a complex type like:

               complexElementType = schema.createComplexType(null);             
  
                AttributeGroupReference propertyAttributes = new
AttributeGroupReference(productTypes, "foo:stringAttributes");
                complexElementType.setBaseType(elementType);
               
complexElementType.addAttributeGroupReference(propertyAttributes);
 

(the same is true for complexElementType = schema.createComplexType(); )

later in the code:
ElementDecl property = new ElementDecl(schema, localName);

        if (complexElementType == null) {
            property.setType(elementType);    
...      
        } else {
            property.setType(complexElementType);           
...
        }

I always get a null pointer exception when writing the schema...

testSchemaCreation(com.bla.BlaSchemaGeneratorMojoTest)  Time elapsed: 3.264
sec  <<< ERROR!
java.lang.NullPointerException
        at
org.exolab.castor.xml.schema.writer.SchemaWriter.processComplexType(SchemaWriter.java:579)
        at
org.exolab.castor.xml.schema.writer.SchemaWriter.processElement(SchemaWriter.java:882)
        at
org.exolab.castor.xml.schema.writer.SchemaWriter.processContentModelGroup(SchemaWriter.java:694)
        at
org.exolab.castor.xml.schema.writer.SchemaWriter.processGroup(SchemaWriter.java:975)
        at
org.exolab.castor.xml.schema.writer.SchemaWriter.processContentModelGroup(SchemaWriter.java:698)
        at
org.exolab.castor.xml.schema.writer.SchemaWriter.processComplexType(SchemaWriter.java:654)
        at
org.exolab.castor.xml.schema.writer.SchemaWriter.processSchema(SchemaWriter.java:1256)
        at
org.exolab.castor.xml.schema.writer.SchemaWriter.write(SchemaWriter.java:214)
        at
com.bla.BlaSchemaGeneratorMojo.writeSchemaFile(BlaSchemaGeneratorMojo.java:1005)


thx,

Philipp 



philipp_s wrote:
> 
> hmm, I am still stuck, I need to add some facets in the generated schema,
> and therefore cannot just simple reference the type from the other schema,
> 
> it seems I need to do something like this in the generated schema:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <schema xmlns="http://www.w3.org/2001/XMLSchema";
> xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
>         targetNamespace="http://foo/barGenerated";
> xmlns:fooGenerated="http://foo/barGenerated";
>         xmlns:foo="http://foo/bar"; elementFormDefault="qualified"
> version="1.0">
>   <xs:import namespace="http://foo/bar"; />
>   
>   <xs:element name="bla">
>     <xs:complexType>
>       <xs:simpleContent>
>         <xs:extension base="fooGenerated:blaBaseType">
>           <xs:attributeGroup ref="foo:stringAttributes" />
>         </xs:extension>
>       </xs:simpleContent>
>     </xs:complexType>
>   </xs:element>
> 
>   <xs:simpleType name="blaBaseType">
>     <xs:restriction base="xs:string">
>       <xs:pattern value="[0-3][0-9]-[A-Za-z]{3}-[1|2][0-9]{3}" />
>     </xs:restriction>
>   </xs:simpleType>
>   
> </schema>
> 
> where the attributeGroup is located in a pre-existing schema
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
> targetNamespace="http://foo/bar"; attributeFormDefault="unqualified"
>   elementFormDefault="qualified" version="1.0">
> 
>   <xs:attributeGroup name="stringAttributes">
>     <xs:attribute name="lang" type="xs:string" use="optional" />
>     <xs:attribute name="index" type="xs:int" use="optional" default="1" />
>   </xs:attributeGroup>
> 
> </xs:schema>
> 
> I now have the problem that I don't know how to create a anonymous
> complexType for the element definition - any help would be appreciated...
> 
> thx,
> 
> Philipp
> 
> 
> philipp_s wrote:
>> 
>> Hi Werner,
>> 
>> let's assume we have a schema like this, containing an attribute group
>> definition:
>> 
>>     <?xml version="1.0" encoding="UTF-8"?>
>>     <schema xmlns="http://www.w3.org/2001/XMLSchema";
>> xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
>>       targetNamespace="http://foo/bar"; elementFormDefault="qualified"
>> version="1.0">  
>>       <xs:attributeGroup name="someAttributes">
>>         <xs:attribute name="index" type="xs:string" use="optional"
>> default="1" />
>>         <xs:attribute name="lang" type="xs:string" use="optinal" />
>>       </xs:attributeGroup>
>>     </Schema>
>>     
>> now I want to programmatically generate a schema that uses the attribute
>> group for an element definition based on the xs:string, it should look
>> something like this:
>>     
>>     <?xml version="1.0" encoding="UTF-8"?>
>>     <schema xmlns="http://www.w3.org/2001/XMLSchema";
>> xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
>>       targetNamespace="http://foo/barGenerated";
>> xmlns:foo="http://foo/bar"; elementFormDefault="qualified" version="1.0">  
>>       <xs:element name="bla">
>>         <xs:complexType>
>>           <xs:simpleContent>
>>             <xs:restriction base="xs:string"></xs:restriction>
>>           </xs:simpleContent>
>>           <xs:attributeGroup ref="foo:someAttributes" />
>>         </xs:complexType>
>>       </xs:element>  
>>     </schema>
>> 
>> But it seems that doesn't work at all, so now I reverted to declare not
>> an attributeGroup but an element type in the pre-existing schema:
>> 
>>   <xs:complexType name="fooType">
>>     <xs:simpleContent>
>>       <xs:extension base="xs:string">
>>         <xs:attribute name="lang" type="xs:string" use="optional" />
>>         <xs:attribute name="index" type="xs:int" use="optional"
>> default="1" />
>>       </xs:extension>
>>     </xs:simpleContent>
>>   </xs:complexType>
>> 
>> and reference that in the generated schema.
>> 
>> 
>> thx,
>> 
>> Philipp
>> 
>> 
>> Werner Guttmann wrote:
>>> 
>>> Hi,
>>> 
>>> can you show me one ro two example of the (anonymuous) type definitions
>>> you'd like to create ?
>>> 
>>> Thanks
>>> Werner
>>> 
>>> philipp_s wrote:
>>>> When programmatically creating a schema using castor, I now need to add
>>>> an
>>>> attributeGroup to an element (type) declaration - how can I do that? 
>>>> 
>>>> thx,
>>>> 
>>>> Philipp
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe from this list, please visit:
>>> 
>>>     http://xircles.codehaus.org/manage_email
>>> 
>>> 
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/programmatic-schema-generation%3A-how-to-add-an-attributeGroup-to-an-element-%28type%29-declaration-tp24147982p24198663.html
Sent from the Castor - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to