| <?xml version="1.0" encoding="UTF-8"?> |
| <xs:schema xmlns:rules="http://drools.org/rules" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" |
| targetNamespace="http://drools.org/rules"> |
| |
| <xs:element name="rule-set"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element maxOccurs="unbounded" minOccurs="0" ref="rules:abstractImport"/> |
| |
| <xs:element maxOccurs="unbounded" minOccurs="0" ref="rules:application-data"/> |
| |
| <xs:element maxOccurs="unbounded" minOccurs="0" ref="rules:abstractFunctions"/> |
| |
| <xs:element maxOccurs="unbounded" minOccurs="0" ref="rules:rule"/> |
| </xs:sequence> |
| |
| <xs:attribute name="name" type="xs:string" use="required"/> |
| <xs:attribute name="description" type="xs:string"/> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="rule"> |
| <xs:complexType> |
| <xs:sequence> |
| |
| <xs:element maxOccurs="unbounded" minOccurs="0" name="parameter"> |
| <xs:complexType> |
| <xs:choice> |
| <xs:element ref="rules:abstractClass"/> |
| <xs:element ref="rules:class-field"/> |
| <xs:element ref="rules:semaphore"/> |
| </xs:choice> |
| <xs:attribute name="identifier" type="xs:string" use="required"/> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element maxOccurs="unbounded" minOccurs="0" ref="rules:abstractCondition"/> |
| |
| <xs:element minOccurs="0" name="duration"> |
| <xs:complexType> |
| <xs:attribute name="days" type="xs:nonNegativeInteger"/> |
| <xs:attribute name="hours" type="xs:nonNegativeInteger"/> |
| <xs:attribute name="minutes" type="xs:nonNegativeInteger"/> |
| <xs:attribute name="seconds" type="xs:nonNegativeInteger"/> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element ref="rules:abstractConsequence"/> |
| |
| </xs:sequence> |
| <xs:attribute name="name" type="xs:string" use="required"/> |
| <xs:attribute name="salience" type="xs:integer"/> |
| <xs:attribute name="no-loop" type="xs:boolean"/> |
| <xs:attribute name="xor-group" type="xs:string"/> |
| <xs:attribute name="description" type="xs:string"/> |
| </xs:complexType> |
| |
| <!-- All rules must have unique names --> |
| <xs:key name="ruleName"> |
| <xs:selector xpath="rules:rule"/> |
| <xs:field xpath="@name"/> |
| </xs:key> |
| </xs:element> |
| |
| <xs:element name="class" substitutionGroup="rules:abstractClass" type="xs:string"/> |
| |
| <xs:element name="class-field"> |
| <xs:complexType> |
| <xs:simpleContent> |
| <xs:extension base="xs:string"> |
| <xs:attribute name="field" type="xs:string" use="required"/> |
| <xs:attribute name="value" type="xs:string" use="required"/> |
| </xs:extension> |
| </xs:simpleContent> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="import" substitutionGroup="rules:abstractImport" type="xs:string"/> |
| |
| |
| <xs:element name="semaphore"> |
| <xs:complexType> |
| <xs:attribute name="type" use="required"> |
| <xs:simpleType> |
| <xs:restriction base="xs:string"> |
| <xs:enumeration value="String"/> |
| <xs:enumeration value="Integer"/> |
| <xs:enumeration value="Long"/> |
| <xs:enumeration value="Boolean"/> |
| <xs:enumeration value="Char"/> |
| <xs:enumeration value="Short"/> |
| <xs:enumeration value="Float"/> |
| <xs:enumeration value="Double"/> |
| <xs:enumeration value="List"/> |
| <xs:enumeration value="Map"/> |
| <xs:enumeration value="Set"/> |
| </xs:restriction> |
| </xs:simpleType> |
| </xs:attribute> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="application-data"> |
| <xs:complexType> |
| <xs:simpleContent> |
| <xs:extension base="xs:string"> |
| <xs:attribute name="identifier" type="xs:string" use="required"/> |
| </xs:extension> |
| </xs:simpleContent> |
| </xs:complexType> |
| </xs:element> |
| |
| <!-- Abstract Definitions for sementic to create concrete implementations --> |
| |
| <xs:element abstract="true" name="abstractImport" type="xs:anyType"/> |
| |
| <xs:element abstract="true" name="abstractFunctions" type="xs:anyType"/> |
| |
| <xs:element abstract="true" name="abstractClass" type="xs:anyType"/> |
| |
| <xs:element abstract="true" name="abstractClassField" type="xs:anyType"/> |
| |
| <xs:element abstract="true" name="abstractCondition" type="xs:anyType"/> |
| |
| <xs:element abstract="true" name="abstractConsequence" type="xs:anyType"/> |
| |
| </xs:schema> |