Regelmotor.xsd

XML Schema Definition for Altinn regelfiler.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="AltinnRuleEngine">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Description" type="xs:string"/>
                <xs:element name="Configuration">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Forms">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Form" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:attribute name="name" type="xs:string" use="optional"/>
                                                <xs:attribute name="dataFormatId" type="xs:integer" use="required"/>
                                                <xs:attribute name="validationEngine" use="required">
                                                    <xs:simpleType>
                                                        <xs:restriction base="xs:string">
                                                            <xs:enumeration value="AltinnRuleEngine"/>
                                                            <xs:enumeration value="InfoPath"/>
                                                            <xs:enumeration value="Both"/>
                                                            <xs:enumeration value="None"/>
                                                        </xs:restriction>
                                                    </xs:simpleType>
                                                </xs:attribute>
                                                <xs:attribute name="calculationEngine" use="required">
                                                    <xs:simpleType>
                                                        <xs:restriction base="xs:string">
                                                            <xs:enumeration value="AltinnRuleEngine"/>
                                                            <xs:enumeration value="InfoPath"/>
                                                            <xs:enumeration value="Both"/>
                                                            <xs:enumeration value="None"/>
                                                        </xs:restriction>
                                                    </xs:simpleType>
                                                </xs:attribute>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="default" type="xs:string" use="optional"/>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="Codelists" minOccurs="0">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Codelist" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:attribute name="name" type="xs:string" use="required"/>
                                                <xs:attribute name="lang" type="Languages" use="required"/>
                                                <xs:attribute name="version" type="xs:integer" use="optional"/>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="PurgeMissingTransfers" minOccurs="0">
                                <xs:complexType name="">
                                    <xs:attribute name="value" type="xs:string" use="optional"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Rules">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Rule" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Source" minOccurs="0" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:attribute name="form" type="xs:integer" use="optional"/>
                                                <xs:attribute name="field" type="xs:string" use="optional"/>
                                                <xs:attribute name="addFields" type="xs:string" use="optional"/>
                                                <xs:attribute name="subtractFields" type="xs:string" use="optional"/>
                                                <xs:attribute name="sumRecurringFields" type="xs:boolean" use="optional"/>
                                                <xs:attribute name="multiple" type="xs:boolean" use="optional"/>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="Target" minOccurs="0" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:attribute name="form" type="xs:integer" use="optional"/>
                                                <xs:attribute name="field" type="xs:string" use="optional"/>
                                                <xs:attribute name="index" type="xs:integer" use="optional"/>
                                                <xs:attribute name="value" type="xs:string" use="optional"/>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="Param" minOccurs="0" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:attribute name="name" use="required">
                                                    <xs:simpleType>
                                                        <xs:restriction base="xs:string">
                                                            <xs:enumeration value="AlwaysRun"/>
                                                            <xs:enumeration value="BaseRate"/>
                                                            <xs:enumeration value="CalculationType"/>
                                                            <xs:enumeration value="CheckCount"/>
                                                            <xs:enumeration value="Deductible"/>
                                                            <xs:enumeration value="DoNotIgnoreZeroValue"/>
                                                            <xs:enumeration value="IgnoreGUID"/>
                                                            <xs:enumeration value="IgnorePrefill"/>
                                                            <xs:enumeration value="IndustryTypes"/>
                                                            <xs:enumeration value="InsertEmptyIfNotCalculated"/>
                                                            <xs:enumeration value="MaxDeduction"/>
                                                            <xs:enumeration value="MaxDistance"/>
                                                            <xs:enumeration value="MinimumTollAndFerryDeduction"/>
                                                            <xs:enumeration value="NormalRate"/>
                                                            <xs:enumeration value="OverMaxDistanceRate"/>
                                                            <xs:enumeration value="PercentageField"/>
                                                            <xs:enumeration value="PercentageTransfer"/>
                                                            <xs:enumeration value="RemoveDirtyField"/>
                                                            <xs:enumeration value="RemoveFieldIfConditionsFail"/>
                                                            <xs:enumeration value="RemoveOnMismatch"/>
                                                            <xs:enumeration value="SetNillable"/>
                                                            <xs:enumeration value="SignStorageHint"/>
                                                            <xs:enumeration value="TransferRecurringFields"/>
                                                            <xs:enumeration value="TransferType"/>
                                                            <xs:enumeration value="USField"/>
                                                            <xs:enumeration value="USField1"/>
                                                            <xs:enumeration value="USField2"/>
                                                            <xs:enumeration value="UtbytteFeltHS"/>
                                                            <xs:enumeration value="UtbytteFeltUS"/>
                                                            <xs:enumeration value="ValidationType"/>
                                                            <xs:enumeration value="ValueType"/>
                                                            <xs:enumeration value="XPath"/>
                                                            <xs:enumeration value="xPathsToValidate"/>
                                                        </xs:restriction>
                                                    </xs:simpleType>
                                                </xs:attribute>
                                                <xs:attribute name="value" type="xs:string" use="required"/>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="Condition" type="Conditions" minOccurs="0" maxOccurs="unbounded"/>
                                        <xs:element name="ErrorTextValueFields" minOccurs="0" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:attribute name="fields" type="xs:string" use="optional"/>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="caption" type="Texts" minOccurs="0"/>
                                        <xs:element name="Texts" type="Texts" minOccurs="0"/>
                                    </xs:sequence>
                                    <xs:attribute name="type" use="required">
                                        <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                <xs:enumeration value="CalculateRF1086"/>
                                                <xs:enumeration value="RemoveFieldElement"/>
                                                <xs:enumeration value="RemoveParentPost"/>
                                                <xs:enumeration value="SetFieldValue"/>
                                                <xs:enumeration value="SimpleValidation"/>
                                                <xs:enumeration value="TransferResult"/>
                                                <xs:enumeration value="TransferValue"/>
                                                <xs:enumeration value="ValidateRF1086"/>
                                                <xs:enumeration value="websa:InternalRF1224Calculations"/>
                                                <xs:enumeration value="websa:TransferFromNO1ToRF1224"/>
                                                <xs:enumeration value="websa:TransferFromRF1084ToRF1030"/>
                                                <xs:enumeration value="websa:TransferFromRF1084ToRF1175"/>
                                                <xs:enumeration value="websa:TransferFromRF1125ToRF1030"/>
                                                <xs:enumeration value="websa:TransferSumFrom0402"/>
                                                <xs:enumeration value="websa:TransferSumToChildcare"/>
                                                <xs:enumeration value="websa:TransferSumToTravelDeduction"/>
                                                <xs:enumeration value="websa:TransferSumToWizard"/>
                                                <xs:enumeration value="websa:ValidatePost337StandardDeductionTempStay"/>
                                                <xs:enumeration value="websa:ValidateRF1219TransferToWizard"/>
                                                <xs:enumeration value="websa:ValidateRF1224BelongsToPost0402"/>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:attribute>
                                    <xs:attribute name="description" type="xs:string" use="optional"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="version" type="xs:string" use="required"/>
            <xs:attribute name="name" type="xs:string" use="required"/>
        </xs:complexType>
        <!-- Keys -->
        <xs:key name="dataFormatId">
            <xs:selector xpath="Configuration/Forms/Form"/>
            <xs:field xpath="@dataFormatId"/>
        </xs:key>
        <xs:key name="codelist">
            <xs:selector xpath="Configuration/Codelists/Codelist"/>
            <xs:field xpath="@name"/>
        </xs:key>
        <!-- Keyrefs -->
        <xs:keyref name="SourceFormRef" refer="dataFormatId">
            <xs:selector xpath="Rules/Rule/Source"/>
            <xs:field xpath="@form"/>
        </xs:keyref>
        <xs:keyref name="TargetFormRef" refer="dataFormatId">
            <xs:selector xpath="Rules/Rule/Target"/>
            <xs:field xpath="@form"/>
        </xs:keyref>
        <xs:keyref name="ConditionCodelistRef" refer="codelist">
            <xs:selector xpath="Rules/Rule/Condition"/>
            <xs:field xpath="@codelist"/>
        </xs:keyref>
    </xs:element>
    <xs:simpleType name="Languages">
        <xs:restriction base="xs:string">
            <xs:enumeration value="1033"/>
            <xs:enumeration value="1044"/>
            <xs:enumeration value="2068"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="Texts">
        <xs:sequence>
            <xs:element name="Text" maxOccurs="3">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute name="lang" type="Languages" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Conditions">
        <xs:attribute name="type" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="AnyFieldEquals"/>
                    <xs:enumeration value="AnyFieldExists"/>
                    <xs:enumeration value="AnyFieldHasValue"/>
                    <xs:enumeration value="AnyFieldHasValueIgnoreZero"/>
                    <xs:enumeration value="AnyFieldIsEmpty"/>
                    <xs:enumeration value="AnyFieldIsMissing"/>
                    <xs:enumeration value="AnyFieldIsPositive"/>
                    <xs:enumeration value="AnyFieldNotEquals"/>
                    <xs:enumeration value="CodeExistsInCodeList"/>
                    <xs:enumeration value="CodeNotInCodeList"/>
                    <xs:enumeration value="ContainsAny"/>
                    <xs:enumeration value="DoesNotMatchPattern"/>
                    <xs:enumeration value="Equals"/>
                    <xs:enumeration value="Exists"/>
                    <xs:enumeration value="GreaterThan"/>
                    <xs:enumeration value="HasAnyForm"/>
                    <xs:enumeration value="HasForm"/>
                    <xs:enumeration value="HasValue"/>
                    <xs:enumeration value="HasValueIgnoreZero"/>
                    <xs:enumeration value="IsEmpty"/>
                    <xs:enumeration value="IsEmptyWithZeroValue"/>
                    <xs:enumeration value="IsMissing"/>
                    <xs:enumeration value="IsNegative"/>
                    <xs:enumeration value="IsNonValidEmail"/>
                    <xs:enumeration value="IsNonValidOrgNr"/>
                    <xs:enumeration value="IsNonValidSSN"/>
                    <xs:enumeration value="IsPositive"/>
                    <xs:enumeration value="IsPositiveIncludingZero"/>
                    <xs:enumeration value="IsPrefilled"/>
                    <xs:enumeration value="IsValidOrgNr"/>
                    <xs:enumeration value="IsValidSSN"/>
                    <xs:enumeration value="LessThan"/>
                    <xs:enumeration value="MatchPattern"/>
                    <xs:enumeration value="MissingForm"/>
                    <xs:enumeration value="NoneFieldHasValue"/>
                    <xs:enumeration value="NotEqualAcrossMultipleForms"/>
                    <xs:enumeration value="NotEquals"/>
                    <xs:enumeration value="NotExists"/>
                    <xs:enumeration value="NotPrefilled"/>
                    <xs:enumeration value="SumEquals"/>
                    <xs:enumeration value="SumNotEquals"/>
                    <xs:enumeration value="SumNotEqualsWithRange"/>
                    <xs:enumeration value="ValueFoundMoreThanOnceInFields"/>
                    <xs:enumeration value="ValueNotInCodeList"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="check" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="valuesourceform" type="xs:string"/>
        <xs:attribute name="valuefieldindex" type="xs:integer"/>
        <xs:attribute name="codelist" type="xs:string"/>
        <xs:attribute name="form" type="xs:string"/>
        <xs:attribute name="fieldindex" type="xs:integer"/>
        <xs:attribute name="donotignorezero" type="xs:boolean"/>
    </xs:complexType>
</xs:schema>