XML schema for ACT entities
<?xml
version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="act">
<xs:complexType>
<xs:choice
maxOccurs="unbounded">
<xs:element
name="type-library">
<xs:complexType>
<xs:choice
minOccurs="0" maxOccurs="unbounded">
<xs:element
ref="template"/>
<xs:element
ref="map"/>
<xs:element
ref="type"/>
<xs:element
ref="pattern"/>
</xs:choice>
<xs:attribute
name="id" type="xs:string"/>
<xs:attribute
name="name-prefix" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element
name="template-library">
<xs:complexType>
<xs:choice
minOccurs="0" maxOccurs="unbounded">
<xs:element
ref="template"/>
<xs:element
ref="map"/>
<xs:element
ref="type"/>
<xs:element
ref="pattern"/>
</xs:choice>
<xs:attribute
name="id" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element
name="platform-definition">
<xs:complexType>
<xs:choice
minOccurs="0" maxOccurs="unbounded">
<xs:element
ref="template"/>
<xs:element
ref="map"/>
<xs:element
ref="type"/>
<xs:element
ref="pattern"/>
</xs:choice>
<xs:attribute
name="id" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="template">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element
name="body" type="template-body"/>
<xs:element
name="j-code" type="xs:string"/>
</xs:choice>
<xs:element
name="define" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension
base="template-body">
<xs:attribute
name="id" type="xs:string" use="required"/>
<xs:attribute
name="expr" type="xs:string"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute
name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="map">
<xs:complexType>
<xs:sequence
minOccurs="0" maxOccurs="unbounded">
<xs:element
name="key">
<xs:complexType>
<xs:attribute
name="id" type="xs:string"/>
<xs:attribute
name="value" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute
name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="type">
<xs:complexType>
<xs:sequence>
<xs:element
name="include" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute
name="path" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element
ref="template"/>
</xs:sequence>
<xs:attribute
name="id" type="xs:string" use="required"/>
<xs:attribute
name="name" type="xs:string"/>
<xs:attribute
name="kind">
<xs:simpleType>
<xs:restriction
base="xs:string">
<xs:enumeration
value="attribute"/>
<xs:enumeration
value="container"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute
name="container-kind">
<xs:simpleType>
<xs:restriction
base="xs:string">
<xs:enumeration
value="OrderedMap"/>
<xs:enumeration
value="UnorderedMap"/>
<xs:enumeration
value="OrderedMultiMap"/>
<xs:enumeration
value="UnorderedMultiMap"/>
<xs:enumeration
value="OrderedSet"/>
<xs:enumeration
value="UnorderedSet"/>
<xs:enumeration
value="OrderedCollection"/>
<xs:enumeration
value="UnorderedCollection"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="decoration-hint">
<xs:simpleType>
<xs:restriction
base="xs:string">
<xs:enumeration
value="map"/>
<xs:enumeration
value="coll"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:complexType
name="template-body" mixed="true">
<xs:choice minOccurs="0"
maxOccurs="unbounded">
<xs:element
name="if">
<xs:complexType>
<xs:complexContent>
<xs:extension
base="template-body">
<xs:attribute
name="expr" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element
name="br"/>
<xs:element
name="indent" type="template-body"/>
<xs:element
name="unindent"/>
<xs:element
name="header" type="template-body"/>
<xs:element
name="footer" type="template-body"/>
<xs:element
name="subst"/>
<xs:element
name="foreach">
<xs:complexType>
<xs:complexContent>
<xs:extension
base="template-body">
<xs:attribute
name="expr" type="xs:string" use="required"/>
<xs:attribute
name="reverse" type="xs:boolean"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element
name="include">
<xs:complexType>
<xs:attribute
name="tpl" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element
name="tab"/>
<xs:element
name="separator" type="template-body"/>
</xs:choice>
</xs:complexType>
<xs:element name="pattern">
<xs:complexType>
<xs:all>
<xs:element
name="body">
<xs:complexType>
<xs:sequence
maxOccurs="unbounded">
<xs:element
name="event">
<xs:complexType>
<xs:sequence>
<xs:element
name="j-code" type="xs:string"/>
</xs:sequence>
<xs:attribute
name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="kind"
type="xs:string"/>
<xs:attribute
name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>