Simple Content Format XSD Schema
The following XSD schema defines the Simple Content Format:
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="https://www.w3.org/2001/XMLSchema">
<!-- General element related types -->
<xsd:simpleType name="Alignment">
<xsd:restriction base="xsd:string">
<xsd:pattern value="l|r|c" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ColorRGB">
<xsd:restriction base="xsd:hexBinary">
<xsd:minLength value="1" />
<xsd:maxLength value="6" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="SelectAction">
<xsd:restriction base="xsd:string">
<xsd:pattern value="target|menuid" />
</xsd:restriction>
</xsd:simpleType>
<!-- Image element related types -->
<xsd:simpleType name="ImageFit">
<xsd:restriction base="xsd:string">
<xsd:pattern value="native|width|screen|auto" />
</xsd:restriction>
</xsd:simpleType>
<!-- Text element related types -->
<xsd:simpleType name="TextWrap">
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minInclusive value="0" />
<xsd:maxInclusive value="1" />
</xsd:restriction>
</xsd:simpleType>
<!-- Button element related types -->
<xsd:simpleType name="ButtonKey">
<xsd:restriction base="xsd:string">
<xsd:pattern value="enter|back|left|right" />
</xsd:restriction>
</xsd:simpleType>
<!-- Item element related types -->
<xsd:simpleType name="MenuItemDefault">
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minInclusive value="0" />
<xsd:maxInclusive value="1" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="MenuItemEnabled">
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minInclusive value="0" />
<xsd:maxInclusive value="1" />
</xsd:restriction>
</xsd:simpleType>
<!-- Content element related types -->
<xsd:simpleType name="ContentBackgroundFitMode">
<xsd:restriction base="xsd:string">
<xsd:pattern value="s|t|c" />
</xsd:restriction>
</xsd:simpleType>
<!-- Element groupings -->
<xsd:group name="DialogChild">
<xsd:choice>
<xsd:element ref="txt" minOccurs="1" />
<xsd:element ref="btn" minOccurs="1" />
</xsd:choice>
</xsd:group>
<xsd:group name="MenuChild">
<xsd:choice>
<xsd:element ref="item" minOccurs="1" />
<xsd:element ref="div" />
<xsd:element ref="btn" />
</xsd:choice>
</xsd:group>
<xsd:group name="ContentChild">
<xsd:choice>
<xsd:element ref="txt" />
<xsd:element ref="br" />
<xsd:element ref="img" />
<xsd:element ref="btn" />
</xsd:choice>
</xsd:group>
<xsd:group name="TopLevel">
<xsd:choice>
<xsd:element ref="content" />
<xsd:element ref="menu" />
<xsd:element ref="dialog" />
</xsd:choice>
</xsd:group>
<!-- Schema elements -->
<xsd:element name="body">
<xsd:complexType>
<xsd:group ref="TopLevel" />
</xsd:complexType>
</xsd:element>
<xsd:element name="img">
<xsd:complexType>
<xsd:attribute name="id" type="xsd:positiveInteger" use="required" />
<xsd:attribute name="align" type="Alignment" use="optional" />
<xsd:attribute name="fit" type="ImageFit" use="optional" />
<xsd:attribute name="alt" type="xsd:string" use="optional" />
</xsd:complexType>
</xsd:element>
<xsd:complexType name="EmphasisType" mixed="true">
<xsd:sequence minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="clr" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ColorType" mixed="true">
<xsd:sequence minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="em" />
</xsd:sequence>
<xsd:attribute name="rgb" type="ColorRGB" use="required" />
</xsd:complexType>
<xsd:element name="em" type="EmphasisType" />
<xsd:element name="clr" type="ColorType" />
<xsd:group name="Text">
<xsd:choice>
<xsd:element ref="em" />
<xsd:element ref="clr" />
<xsd:element ref="br" />
</xsd:choice>
</xsd:group>
<xsd:complexType name="TextType" mixed="true">
<xsd:group ref="Text" minOccurs="0" maxOccurs="unbounded" />
<xsd:attribute name="align" type="Alignment" use="optional" />
<xsd:attribute name="wrap" type="TextWrap" use="optional" />
<xsd:attribute name="rgb" type="ColorRGB" use="optional" />
</xsd:complexType>
<xsd:element name="txt" type="TextType" />
<xsd:element name="br">
<xsd:complexType />
</xsd:element>
<xsd:element name="div">
<xsd:complexType />
</xsd:element>
<xsd:element name="btn">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="key" type="ButtonKey" use="required" />
<xsd:attribute name="target" type="xsd:positiveInteger" use="required" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="content">
<xsd:complexType>
<xsd:group ref="ContentChild" maxOccurs="unbounded" />
<xsd:attribute name="id" type="xsd:positiveInteger" use="required" />
<xsd:attribute name="title" type="xsd:string" use="optional" />
<xsd:attribute name="bg" type="xsd:positiveInteger" use="optional" />
<xsd:attribute name="bgfit" type="ContentBackgroundFitMode" use="optional" />
<xsd:attribute name="menuid" type="xsd:positiveInteger" use="optional" />
</xsd:complexType>
<xsd:unique name="UniqueButtonKeyContent">
<xsd:selector xpath="./btn" />
<xsd:field xpath="@key" />
</xsd:unique>
</xsd:element>
<xsd:element name="item">
<xsd:complexType name="ItemType" mixed="true">
<xsd:sequence minOccurs="0" maxOccurs="1">
<xsd:element ref="br" />
</xsd:sequence>
<xsd:attribute name="id" type="xsd:positiveInteger" use="optional" />
<xsd:attribute name="target" type="xsd:positiveInteger" use="required" />
<xsd:attribute name="imgid" type="xsd:positiveInteger" use="optional" />
<xsd:attribute name="def" type="MenuItemDefault" use="optional" />
<xsd:attribute name="enable" type="MenuItemEnabled" use="optional" />
<xsd:attribute name="menuid" type="xsd:positiveInteger" use="optional" />
</xsd:complexType>
<xsd:unique name="UniqueId">
<xsd:selector xpath="./item" />
<xsd:field xpath="@id" />
</xsd:unique>
</xsd:element>
<xsd:element name="menu">
<xsd:complexType>
<xsd:group ref="MenuChild" maxOccurs="unbounded" />
<xsd:attribute name="id" type="xsd:positiveInteger" use="required" />
<xsd:attribute name="title" type="xsd:string" use="optional" />
<xsd:attribute name="selectaction" type="SelectAction" use="optional" />
</xsd:complexType>
</xsd:element>
<xsd:element name="dialog">
<xsd:complexType>
<xsd:group ref="DialogChild" maxOccurs="unbounded" />
<xsd:attribute name="id" type="xsd:positiveInteger" use="required" />
<xsd:attribute name="title" type="xsd:string" use="optional" />
<xsd:attribute name="imgid" type="xsd:positiveInteger" use="optional" />
</xsd:complexType>
<xsd:unique name="UniqueButtonKeyDialog">
<xsd:selector xpath="./btn" />
<xsd:field xpath="@key" />
</xsd:unique>
</xsd:element>
</xsd:schema>