configurationengine/source/plugins/common/ConeLegacyRulePlugin/legacyruleplugin/xsd/ruleml2.xsd
<?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><rule>MyFeature.MySetting1 == 'test' configures MyFeature.MySetting2 = '1'</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><rule>True configures MyFeature.MySetting = {% get_some_value() %}</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><rule>True configures MyFeature.MySetting = {% get_some_value(${MyFeature.MySetting1}) %}</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>