XSD
The file with context message type definitions (the Additional File
tagencontextmessages.xml) must meet this schema:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="ContextMessages">
<xs:complexType>
<xs:sequence>
<xs:element name="ContextMessage" type="ContextMessageType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="ContextMessageType">
<xs:sequence>
<xs:element ref="MessageIdentifier"/>
<xs:element ref="MaxSelect"/>
<xs:element name="Template" type="TemplateType" minOccurs="2" maxOccurs="2"/>
<xs:element name="AppliesTo" type="AppliesToType"/>
<xs:element name="Mappings" type="MappingsType" minOccurs="0"/>
<xs:element ref="IncludeHook" minOccurs="0"/>
<xs:element ref="DeclarationHook" minOccurs="0"/>
<xs:element ref="FunctionHook" minOccurs="0"/>
<xs:element ref="ConditionHook" minOccurs="0"/>
<xs:element ref="BeforeMappingHook" minOccurs="0"/>
<xs:element ref="AfterMappingHook" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Id" type="xs:string" use="required"/>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="TemplateType">
<xs:sequence>
<xs:element name="_Block_" type="_Block_Type" minOccurs="1" maxOccurs="2"/>
</xs:sequence>
<xs:attribute name="condition" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="gen:data"/>
<xs:enumeration value="gen:empty"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="_Block_Type">
<xs:sequence>
<xs:any minOccurs="0"/>
</xs:sequence>
<xs:attribute name="condition">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="gen:noRepeat"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="AppliesToType">
<xs:sequence>
<xs:element name="Table" type="TableType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TableType">
<xs:sequence>
<xs:element ref="Filter" minOccurs="0"/>
<xs:element name="Domain" type="DomainType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DomainType">
<xs:sequence>
<xs:element ref="Filter" minOccurs="0"/>
<xs:element name="TableField" type="TableFieldType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TableFieldType">
<xs:sequence>
<xs:element ref="Filter" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MappingsType">
<xs:sequence>
<xs:element name="Mapping" type="MappingType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MappingType">
<xs:sequence>
<xs:element ref="Source"/>
<xs:element ref="Target"/>
</xs:sequence>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="domain"/>
<xs:enumeration value="field"/>
<xs:enumeration value="function"/>
<xs:enumeration value="hook"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:element name="AfterMappingHook" type="xs:string"/>
<xs:element name="BeforeMappingHook" type="xs:string"/>
<xs:element name="ConditionHook" type="xs:string"/>
<xs:element name="DeclarationHook" type="xs:string"/>
<xs:element name="Filter" type="xs:string"/>
<xs:element name="FunctionHook" type="xs:string"/>
<xs:element name="IncludeHook" type="xs:string"/>
<xs:element name="MaxSelect" type="xs:int"/>
<xs:element name="MessageIdentifier" type="xs:string"/>
<xs:element name="Source" type="xs:string"/>
<xs:element name="Target" type="xs:string"/>
</xs:schema>