1
0
Files
bagu-thesis/docs/XThesis.xsd

258 lines
7.1 KiB
XML
Raw Normal View History

2026-05-22 12:51:10 +08:00
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<!-- ===== Model Groups ===== -->
<xs:group name="paraInlineContent">
<xs:choice>
<xs:element ref="span"/>
<xs:element ref="inlineeq"/>
<xs:element ref="b"/>
<xs:element ref="i"/>
<xs:element ref="ref"/>
<xs:element ref="cref"/>
<xs:element ref="cite"/>
</xs:choice>
</xs:group>
<xs:group name="sectionBodyContent">
<xs:choice>
<xs:element ref="paragraph"/>
<xs:element ref="equation"/>
<xs:element ref="figure"/>
<xs:element ref="table"/>
<xs:element ref="pagebreaker"/>
</xs:choice>
</xs:group>
<!-- ===== Root Element ===== -->
<xs:element name="article">
<xs:complexType>
<xs:sequence>
<xs:element ref="preface"/>
<xs:element ref="document"/>
<xs:element ref="appendix"/>
<xs:element ref="reference"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- ===== Top-level Structure Elements ===== -->
<xs:element name="preface">
<xs:complexType>
<xs:sequence>
<xs:element ref="section" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="document">
<xs:complexType>
<xs:sequence>
<xs:element ref="section1" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="appendix">
<xs:complexType>
<xs:sequence>
<xs:element ref="section" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="reference" type="xs:string"/>
<!-- ===== Section (no number, for preface/appendix) ===== -->
<xs:element name="section">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="paragraph"/>
<xs:element ref="pagebreaker"/>
</xs:choice>
<xs:attribute name="caption" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<!-- ===== Numbered Sections (section1 ~ section9) ===== -->
<xs:element name="section9">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="sectionBodyContent"/>
</xs:choice>
<xs:attribute name="caption" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="section8">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="sectionBodyContent"/>
<xs:element ref="section9"/>
</xs:choice>
<xs:attribute name="caption" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="section7">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="sectionBodyContent"/>
<xs:element ref="section8"/>
</xs:choice>
<xs:attribute name="caption" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="section6">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="sectionBodyContent"/>
<xs:element ref="section7"/>
</xs:choice>
<xs:attribute name="caption" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="section5">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="sectionBodyContent"/>
<xs:element ref="section6"/>
</xs:choice>
<xs:attribute name="caption" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="section4">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="sectionBodyContent"/>
<xs:element ref="section5"/>
</xs:choice>
<xs:attribute name="caption" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="section3">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="sectionBodyContent"/>
<xs:element ref="section4"/>
</xs:choice>
<xs:attribute name="caption" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="section2">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="sectionBodyContent"/>
<xs:element ref="section3"/>
</xs:choice>
<xs:attribute name="caption" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="section1">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="sectionBodyContent"/>
<xs:element ref="section2"/>
</xs:choice>
<xs:attribute name="caption" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<!-- ===== Paragraph and Inline Elements ===== -->
<xs:element name="paragraph">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="paraInlineContent"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="span" type="xs:string"/>
<xs:element name="inlineeq" type="xs:string"/>
<xs:element name="b" type="xs:string"/>
<xs:element name="i" type="xs:string"/>
<xs:element name="ref" type="xs:string"/>
<xs:element name="cref" type="xs:string"/>
<xs:element name="cite" type="xs:string"/>
<!-- ===== Block Elements ===== -->
<xs:element name="equation">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="label" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="figure">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="label" type="xs:string" use="required"/>
<xs:attribute name="caption" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="table">
<xs:complexType>
<xs:sequence>
<xs:element ref="thead"/>
<xs:element ref="tbody"/>
</xs:sequence>
<xs:attribute name="label" type="xs:string" use="required"/>
<xs:attribute name="caption" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="thead">
<xs:complexType>
<xs:sequence>
<xs:element ref="td" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="tbody">
<xs:complexType>
<xs:sequence>
<xs:element ref="tr" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="tr">
<xs:complexType>
<xs:sequence>
<xs:element ref="td" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="td" type="xs:string"/>
<!-- ===== Misc ===== -->
<xs:element name="pagebreaker">
<xs:complexType/>
</xs:element>
</xs:schema>