doc/dev/proto/ProtoDocument.xsd (156 lines of code) (raw):

<?xml version="1.0" encoding="UTF-8" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="UndocumentedType"> <xs:attribute name="item" type="xs:string" use="required" /> </xs:complexType> <xs:complexType name="ObjectPropertyColumnType"> <xs:attribute name="name" type="xs:string" use="required" /> <xs:attribute name="field" type="xs:string" use="required" /> <xs:attribute name="conditionOn" type="xs:string" /> <xs:attribute name="true" type="xs:string" /> <xs:attribute name="false" type="xs:string" /> </xs:complexType> <xs:complexType name="ObjectPropertyTableType"> <xs:sequence> <xs:element name="Column" type="ObjectPropertyColumnType" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="object" type="xs:string" /> <xs:attribute name="defaults" type="xs:string" /> <xs:attribute name="popDefaults" type="xs:string" /> <xs:attribute name="consts" type="xs:string" /> <xs:attribute name="kinds" type="xs:string" /> </xs:complexType> <xs:complexType name="ObjectSubtypeColumnType"> <xs:attribute name="name" type="xs:string" use="required" /> <xs:attribute name="field" type="xs:string" use="required" /> <xs:attribute name="conditionOn" type="xs:string" /> </xs:complexType> <xs:complexType name="ObjectSubtypeTableType"> <xs:sequence> <xs:element name="Column" type="ObjectSubtypeColumnType" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="object" type="xs:string" /> <xs:attribute name="discriminator" type="xs:string" /> </xs:complexType> <xs:complexType name="EnumValueColumnType"> <xs:attribute name="name" type="xs:string" use="required" /> <xs:attribute name="field" type="xs:string" use="required" /> </xs:complexType> <xs:complexType name="EnumValueTableType"> <xs:sequence> <xs:element name="Column" type="EnumValueColumnType" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="object" type="xs:string" /> </xs:complexType> <xs:complexType name="TestCaseColumnType"> <xs:attribute name="name" type="xs:string" use="required" /> <xs:attribute name="field" type="xs:string" use="required" /> </xs:complexType> <xs:complexType name="TestCaseTableType"> <xs:sequence> <xs:element name="Column" type="TestCaseColumnType" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="suite" type="xs:string" /> </xs:complexType> <xs:complexType name="ItemizationType"> <xs:sequence> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="Item" type="xs:string" /> <xs:element name="Indent" type="ItemizationType" /> </xs:choice> </xs:sequence> </xs:complexType> <xs:complexType name="baseExampleType"> <xs:attribute name="minChildren" type="xs:integer" /> <xs:attribute name="maxWidth" type="xs:integer" /> <xs:attribute name="minLines" type="xs:integer" /> <xs:attribute name="maxLines" type="xs:integer" /> </xs:complexType> <xs:complexType name="ExampleDefaultsType"> <xs:complexContent> <xs:extension base="baseExampleType"> <xs:attribute name="targetLines" type="xs:integer" use="required" /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="IncludeExcludeType"> <xs:attribute name="key" type="xs:string" use="required" /> </xs:complexType> <xs:complexType name="ExampleType" mixed="true"> <xs:complexContent> <xs:extension base="baseExampleType"> <xs:sequence> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="Include" type="IncludeExcludeType" /> <xs:element name="Exclude" type="IncludeExcludeType" /> </xs:choice> </xs:sequence> <xs:attribute name="suite" type="xs:string" /> <xs:attribute name="key" type="xs:string" use="required" /> <xs:attribute name="value" type="xs:string" /> <xs:attribute name="targetLines" type="xs:integer" /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="CodeBlockType" mixed="true"> <xs:attribute name="language" type="xs:string" /> <xs:attribute name="source" type="xs:string" /> </xs:complexType> <xs:complexType name="HeaderType" mixed="true"> <xs:sequence> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="Undocumented" type="UndocumentedType" /> <xs:element name="ObjectPropertyTable" type="ObjectPropertyTableType" /> <xs:element name="ExampleDefaults" type="ExampleDefaultsType" /> </xs:choice> </xs:sequence> </xs:complexType> <xs:complexType name="HeadingType" mixed="true"> </xs:complexType> <xs:group name="sectionContentGroup"> <xs:choice> <xs:element name="Subsubheading" type="HeadingType" /> <xs:element name="Paragraph" type="xs:string" /> <xs:element name="Itemization" type="ItemizationType" /> <xs:element name="ObjectPropertyTable" type="ObjectPropertyTableType" /> <xs:element name="ObjectSubtypeTable" type="ObjectSubtypeTableType" /> <xs:element name="EnumValueTable" type="EnumValueTableType" /> <xs:element name="TestCaseTable" type="TestCaseTableType" /> <xs:element name="Example" type="ExampleType" /> <xs:element name="CodeBlock" type="CodeBlockType" /> </xs:choice> </xs:group> <xs:complexType name="SubsectionType"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:group ref="sectionContentGroup" /> </xs:choice> <xs:attribute name="item" type="xs:string" /> </xs:complexType> <xs:complexType name="SectionType"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:group ref="sectionContentGroup" /> <xs:element name="Heading" type="HeadingType" /> <xs:element name="Subheading" type="HeadingType" /> <xs:element name="Subsection" type="SubsectionType" /> </xs:choice> <xs:attribute name="suite" type="xs:string" /> </xs:complexType> <xs:complexType name="BodyType"> <xs:sequence> <xs:element name="Title" type="xs:string" minOccurs="0" /> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="Heading" type="HeadingType" /> <xs:element name="Section" type="SectionType" /> <xs:element name="Paragraph" type="xs:string" /> <xs:element name="Itemization" type="ItemizationType" /> </xs:choice> </xs:sequence> </xs:complexType> <xs:complexType name="DocumentType"> <xs:sequence> <xs:element name="Header" type="HeaderType" /> <xs:element name="Body" type="BodyType" /> </xs:sequence> </xs:complexType> <xs:element name="Document" type="DocumentType" /> </xs:schema>