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

Reply via email to