configurationengine/source/plugins/common/ConeLegacyRulePlugin/legacyruleplugin/xsd/ruleml2.xsd
changeset 3 e7e0ae78773e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/configurationengine/source/plugins/common/ConeLegacyRulePlugin/legacyruleplugin/xsd/ruleml2.xsd	Tue Aug 10 14:29:28 2010 +0300
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema 
+	xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	targetNamespace="http://www.s60.com/xml/ruleml/2"
+	xmlns:ruleml="http://www.s60.com/xml/ruleml/2"
+	elementFormDefault="qualified">
+
+    <xs:element name="ruleml">
+        <xs:annotation>
+            <xs:documentation>
+                RuleML v2 implementation for specifying rules to execute.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element name="rule" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            <![CDATA[
+                            <p>The rule element specifies a single rule to execute.</p><br/>
+                            
+                            <p>
+                            For example:<br/>
+                            <b>&lt;rule>MyFeature.MySetting1 == 'test' configures MyFeature.MySetting2 = '1'&lt;/rule></b><br/>
+                            This would cause the value '1' to be assigned to the setting 'MyFeature.MySetting2'
+                            if the value of the setting 'MyFeature.MySetting1' is 'test'.
+                            </p><br/>
+                            
+                            <p>
+                            Arbitrary Python code can also be executed in the rule by enclosing the eval block
+                            with {% %}. For example:<br/>
+                            <b>&lt;rule>True configures MyFeature.MySetting = {% get_some_value() %}&lt;/rule></b><br/>
+                            This would cause the value got from evaluating the Python function call
+                            get_some_value() to be assigned to the setting 'MyFeature.MySetting'.
+                            </p><br/>
+                            
+                            <p>
+                            Any settings referenced inside an eval block must be enclosed with ${ }
+                            to differentiate them from the Python code. For example:<br/>
+                              <b>&lt;rule>True configures MyFeature.MySetting = {% get_some_value(${MyFeature.MySetting1}) %}&lt;/rule></b><br/>
+                            This would cause the value of the setting 'MyFeature.MySetting1' to be passed as a
+                            parameter to the function call.
+                            The actual feature object handled by ConE can be accessed by enclosing the setting
+                            reference with @{ }.
+                            </p><br/>                            
+                            
+                            <p>
+                            Any functions or variables (like get_some_value() in the above examples) need
+                            to be defined using eval_globals elements inside the ruleml element.
+                            </p>
+                            ]]>
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="eval_globals" type="ruleml:evalGlobalsType">
+                    <xs:annotation>
+                        <xs:documentation>
+                            An eval_globals block can be used to add Python variables
+                            or functions to the evaluation context of the rules contained
+                            within the current ruleml implementation. The Python code can be contained
+                            either directly inside the XML element or inside a file pointed by the
+                            'file' attribute.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+            </xs:choice>
+        </xs:complexType>
+    </xs:element>
+    
+    <xs:complexType name="evalGlobalsType">
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:attribute name="file" type="xs:string" use="optional">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Path to the file containing the Python code of the eval_globals element.
+                            Should be a path relative to the current implementation file.
+                            Specifying the 'file' attribute causes the text content of the eval_globals
+                            element to be ignored.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+</xs:schema>
\ No newline at end of file