Hi,
I was trying to generate JIBX mappings for JBoss Rules xsd. I
generated classes and binding file using xsd2jibx. But following part
of the mapping is creating problem
<mapping class="org.drools.drools_3_0.And" abstract="true">
<namespace uri="http://drools.org/drools-3.0" default="elements"/>
<collection field="choiceList" ordered="false">
<structure name="and" usage="optional"
type="org.drools.drools_3_0.And"/>
<structure name="or" usage="optional" type="org.drools.drools_3_0.Or"/>
<structure name="not" usage="optional" type="org.drools.drools_3_0.Not"/>
<structure name="exists" usage="optional"
type="org.drools.drools_3_0.Exists"/>
<value name="eval" type="java.lang.String" usage="optional"/>
<structure name="pattern" usage="optional"
type="org.drools.drools_3_0.Pattern"/>
</collection>
</mapping>
<mapping class="org.drools.drools_3_0.Or" abstract="true">
<namespace uri="http://drools.org/drools-3.0" default="elements"/>
<collection field="choiceList" ordered="false">
<structure name="and" usage="optional" type="org.drools.drools_3_0.And"/>
<structure name="or" usage="optional" type="org.drools.drools_3_0.Or"/>
<structure name="not" usage="optional" type="org.drools.drools_3_0.Not"/>
<structure name="exists" usage="optional"
type="org.drools.drools_3_0.Exists"/>
<value name="eval" type="java.lang.String" usage="optional"/>
<structure name="pattern" usage="optional"
type="org.drools.drools_3_0.Pattern"/>
</collection>
</mapping>
As can be seen, org.drools.drools_3_0.And and org.drools.drools_3_0.Or
mappings are recursive and create problem while binding. I have
attached drools-3.0.xsd.
Thanks,
Unmesh
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:drools="http://drools.org/drools-3.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://drools.org/drools-3.0">
<xs:element name="package">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element ref="drools:import"/>
<xs:element ref="drools:global"/>
<xs:element ref="drools:function"/>
<xs:element ref="drools:rule"/>
<xs:element ref="drools:query"/>
</xs:choice>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="rule">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0"
ref="drools:rule-attribute"/>
<xs:element ref="drools:lhs"/>
<xs:element ref="drools:rhs"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<!-- All rules must have unique names -->
<xs:key name="ruleName">
<xs:selector xpath="drools:rule"/>
<xs:field xpath="@name"/>
</xs:key>
</xs:element>
<xs:element name="query">
<xs:complexType>
<xs:sequence>
<xs:element ref="drools:lhs"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<!-- All rules must have unique names -->
<xs:key name="queryName">
<xs:selector xpath="drools:query"/>
<xs:field xpath="@name"/>
</xs:key>
</xs:element>
<xs:element name="rule-attribute">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="import">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="global">
<xs:complexType>
<xs:attribute name="type" type="xs:string" use="required"/>
<xs:attribute name="identifier" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="function">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="drools:parameter"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="return-type" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="parameter">
<xs:complexType>
<xs:attribute name="type" type="xs:string" use="required"/>
<xs:attribute name="identifier" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="rhs" type="xs:string"/>
<xs:element name="lhs">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element ref="drools:and"/>
<xs:element ref="drools:or"/>
<xs:element ref="drools:not"/>
<xs:element ref="drools:exists"/>
<xs:element ref="drools:eval"/>
<xs:element ref="drools:pattern"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="and">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element ref="drools:and"/>
<xs:element ref="drools:or"/>
<xs:element ref="drools:not"/>
<xs:element ref="drools:exists"/>
<xs:element ref="drools:eval"/>
<xs:element ref="drools:pattern"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="or">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element ref="drools:and"/>
<xs:element ref="drools:or"/>
<xs:element ref="drools:not"/>
<xs:element ref="drools:exists"/>
<xs:element ref="drools:eval"/>
<xs:element ref="drools:pattern"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="not">
<xs:complexType>
<xs:sequence>
<xs:element ref="drools:pattern"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="exists">
<xs:complexType>
<xs:sequence>
<xs:element ref="drools:pattern"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="eval" type="xs:string" />
<xs:element name="pattern">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element ref="drools:field-binding"/>
<xs:element ref="drools:field-constraint"/>
<xs:element ref="drools:predicate"/>
</xs:choice>
<xs:attribute name="identifier" type="xs:string" use="optional"/>
<xs:attribute name="object-type" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="field-constraint">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="0">
<!-- commenting out the bellow ref as it is printing an error -->
<!-- xs:element ref="drools:connective-restriction"/ -->
<xs:element ref="drools:literal-restriction"/>
<xs:element ref="drools:variable-restriction"/>
<xs:element ref="drools:return-value-restriction"/>
</xs:choice>
<xs:attribute name="field-name" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="field-binding">
<xs:complexType>
<xs:attribute name="field-name" type="xs:string" use="required"/>
<xs:attribute name="identifier" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="literal-restriction">
<xs:complexType>
<xs:attribute name="evaluator" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="variable-restriction">
<xs:complexType>
<xs:attribute name="evaluator" type="xs:string" use="required"/>
<xs:attribute name="identifier" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="return-value-restriction">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="evaluator" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="predicate">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
jibx-users mailing list
jibx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-users