<?xml version="1.0" encoding="UTF-8"?>
<!--
    XMLSchema for Japanese Law
    Version: 3.0
    Date: Nov 24, 2020
    Contact: Ministry of Internal Affairs and Communications, Government of JAPAN
-->
<!--  Law =================================================================== -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="Law">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="LawNum"/>
        <xs:element ref="LawBody"/>
      </xs:sequence>
      <xs:attribute name="Era" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Meiji"/>
            <xs:enumeration value="Taisho"/>
            <xs:enumeration value="Showa"/>
            <xs:enumeration value="Heisei"/>
            <xs:enumeration value="Reiwa"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="Year" use="required" type="xs:positiveInteger"/>
      <xs:attribute name="Num" use="required" type="xs:positiveInteger"/>
      <xs:attribute name="PromulgateMonth" type="xs:positiveInteger"/>
      <xs:attribute name="PromulgateDay" type="xs:positiveInteger"/>
      <xs:attribute name="LawType" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Constitution"/>
            <xs:enumeration value="Act"/>
            <xs:enumeration value="CabinetOrder"/>
            <xs:enumeration value="ImperialOrder"/>
            <xs:enumeration value="MinisterialOrdinance"/>
            <xs:enumeration value="Rule"/>
            <xs:enumeration value="Misc"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="Lang" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="ja"/>
            <xs:enumeration value="en"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="LawNum" type="xs:string"/>
  <!--  LawBody =============================================================== -->
  <xs:element name="LawBody">
    <xs:complexType>
      <xs:sequence>
        <xs:choice>
          <xs:sequence>
            <xs:element ref="LawTitle"/>
            <xs:element minOccurs="0" maxOccurs="unbounded" ref="EnactStatement"/>
            <xs:element minOccurs="0" ref="TOC"/>
          </xs:sequence>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="EnactStatement"/>
            <xs:element minOccurs="0" ref="TOC"/>
          </xs:sequence>
          <xs:sequence>
            <xs:element ref="TOC"/>
            <xs:element minOccurs="0" ref="LawTitle"/>
          </xs:sequence>
        </xs:choice>
        <xs:element minOccurs="0" ref="Preamble"/>
        <xs:element ref="MainProvision"/>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="SupplProvision"/>
          <xs:element ref="AppdxTable"/>
          <xs:element ref="AppdxNote"/>
          <xs:element ref="AppdxStyle"/>
          <xs:element ref="Appdx"/>
          <xs:element ref="AppdxFig"/>
          <xs:element ref="AppdxFormat"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="Subject"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="LawTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
      <xs:attribute name="Kana"/>
      <xs:attribute name="Abbrev"/>
      <xs:attribute name="AbbrevKana"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="EnactStatement">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  TOC ==================================================================== -->
  <xs:element name="TOC">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="TOCLabel"/>
        <xs:element minOccurs="0" ref="TOCPreambleLabel"/>
        <xs:choice>
          <xs:element maxOccurs="unbounded" ref="TOCPart"/>
          <xs:element maxOccurs="unbounded" ref="TOCChapter"/>
          <xs:element maxOccurs="unbounded" ref="TOCSection"/>
          <xs:element maxOccurs="unbounded" ref="TOCArticle"/>
        </xs:choice>
        <xs:element minOccurs="0" ref="TOCSupplProvision"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="TOCAppdxTableLabel"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="TOCLabel">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="TOCPreambleLabel">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="TOCPart">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="PartTitle"/>
        <xs:element minOccurs="0" ref="ArticleRange"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="TOCChapter"/>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="TOCChapter">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ChapterTitle"/>
        <xs:element minOccurs="0" ref="ArticleRange"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="TOCSection"/>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="TOCSection">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="SectionTitle"/>
        <xs:element minOccurs="0" ref="ArticleRange"/>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="TOCSubsection"/>
          <xs:element ref="TOCDivision"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="TOCSubsection">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="SubsectionTitle"/>
        <xs:element minOccurs="0" ref="ArticleRange"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="TOCDivision"/>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="TOCDivision">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="DivisionTitle"/>
        <xs:element minOccurs="0" ref="ArticleRange"/>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="TOCArticle">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ArticleTitle"/>
        <xs:element ref="ArticleCaption"/>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="TOCSupplProvision">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="SupplProvisionLabel"/>
        <xs:element minOccurs="0" ref="ArticleRange"/>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="TOCArticle"/>
          <xs:element ref="TOCChapter"/>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="TOCAppdxTableLabel">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="ArticleRange">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Preamble ============================================================== -->
  <xs:element name="Preamble">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Paragraph"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <!--  MainProvision ========================================================= -->
  <xs:element name="MainProvision">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Part"/>
        <xs:element maxOccurs="unbounded" ref="Chapter"/>
        <xs:element maxOccurs="unbounded" ref="Section"/>
        <xs:element maxOccurs="unbounded" ref="Article"/>
        <xs:element maxOccurs="unbounded" ref="Paragraph"/>
      </xs:choice>
      <xs:attribute name="Extract" type="xs:boolean"/>
    </xs:complexType>
  </xs:element>
  <!--  Part ================================================================== -->
  <xs:element name="Part">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="PartTitle"/>
        <xs:choice>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="Article"/>
            <xs:element minOccurs="0" maxOccurs="unbounded" ref="Chapter"/>
          </xs:sequence>
          <xs:element maxOccurs="unbounded" ref="Chapter"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="PartTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Chapter =============================================================== -->
  <xs:element name="Chapter">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ChapterTitle"/>
        <xs:choice>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="Article"/>
            <xs:element minOccurs="0" maxOccurs="unbounded" ref="Section"/>
          </xs:sequence>
          <xs:element maxOccurs="unbounded" ref="Section"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="ChapterTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Section =============================================================== -->
  <xs:element name="Section">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="SectionTitle"/>
        <xs:choice>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="Article"/>
            <xs:element minOccurs="0" maxOccurs="unbounded" ref="Subsection"/>
          </xs:sequence>
          <xs:element maxOccurs="unbounded" ref="Subsection"/>
          <xs:element maxOccurs="unbounded" ref="Division"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="SectionTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Subsection ============================================================ -->
  <xs:element name="Subsection">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="SubsectionTitle"/>
        <xs:choice>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="Article"/>
            <xs:element minOccurs="0" maxOccurs="unbounded" ref="Division"/>
          </xs:sequence>
          <xs:element maxOccurs="unbounded" ref="Division"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="SubsectionTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Division ============================================================== -->
  <xs:element name="Division">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="DivisionTitle"/>
        <xs:element maxOccurs="unbounded" ref="Article"/>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="DivisionTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Article =============================================================== -->
  <xs:element name="Article">
    <xs:complexType>
      <xs:sequence>
        <xs:choice>
          <xs:sequence>
            <xs:element ref="ArticleCaption"/>
            <xs:element ref="ArticleTitle"/>
          </xs:sequence>
          <xs:sequence>
            <xs:element ref="ArticleTitle"/>
            <xs:element minOccurs="0" ref="ArticleCaption"/>
          </xs:sequence>
        </xs:choice>
        <xs:element maxOccurs="unbounded" ref="Paragraph"/>
        <xs:element minOccurs="0" ref="SupplNote"/>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="ArticleTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="ArticleCaption">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
      <xs:attribute name="CommonCaption" type="xs:boolean"/>
    </xs:complexType>
  </xs:element>
  <!--  Paragraph ============================================================= -->
  <xs:element name="Paragraph">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="ParagraphCaption"/>
        <xs:element ref="ParagraphNum"/>
        <xs:element ref="ParagraphSentence"/>
        <xs:choice>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="AmendProvision"/>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="Class"/>
          <xs:sequence>
            <xs:choice maxOccurs="unbounded">
              <xs:element ref="TableStruct"/>
              <xs:element ref="FigStruct"/>
              <xs:element ref="StyleStruct"/>
            </xs:choice>
            <xs:element minOccurs="0" maxOccurs="unbounded" ref="Item"/>
          </xs:sequence>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="Item"/>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
              <xs:element ref="TableStruct"/>
              <xs:element ref="FigStruct"/>
              <xs:element ref="StyleStruct"/>
              <xs:element ref="List"/>
            </xs:choice>
          </xs:sequence>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="Num" use="required" type="xs:positiveInteger"/>
      <xs:attribute name="OldStyle" type="xs:boolean" default="false"/>
      <xs:attribute name="OldNum" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="ParagraphCaption">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
      <xs:attribute name="CommonCaption" type="xs:boolean"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="ParagraphNum">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="ParagraphSentence">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <!--  SupplNote ============================================================= -->
  <xs:element name="SupplNote">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  AmendProvision ======================================================== -->
  <xs:element name="AmendProvision">
    <xs:complexType>
      <xs:choice>
        <xs:sequence>
          <xs:element ref="AmendProvisionSentence"/>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="NewProvision"/>
        </xs:sequence>
        <xs:element maxOccurs="unbounded" ref="NewProvision"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="AmendProvisionSentence">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Sentence"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="NewProvision">
    <xs:complexType>
      <xs:choice>
        <xs:choice>
          <xs:element ref="LawTitle"/>
          <xs:element ref="Preamble"/>
          <xs:element ref="TOC"/>
          <xs:element maxOccurs="unbounded" ref="Part"/>
          <xs:element maxOccurs="unbounded" ref="PartTitle"/>
          <xs:element maxOccurs="unbounded" ref="Chapter"/>
          <xs:element maxOccurs="unbounded" ref="ChapterTitle"/>
          <xs:element maxOccurs="unbounded" ref="Section"/>
          <xs:element maxOccurs="unbounded" ref="SectionTitle"/>
          <xs:element maxOccurs="unbounded" ref="Subsection"/>
          <xs:element maxOccurs="unbounded" ref="SubsectionTitle"/>
          <xs:element maxOccurs="unbounded" ref="Division"/>
          <xs:element maxOccurs="unbounded" ref="DivisionTitle"/>
          <xs:element maxOccurs="unbounded" ref="Article"/>
          <xs:element maxOccurs="unbounded" ref="SupplNote"/>
          <xs:element maxOccurs="unbounded" ref="Paragraph"/>
          <xs:element maxOccurs="unbounded" ref="Item"/>
          <xs:element maxOccurs="unbounded" ref="Subitem1"/>
          <xs:element maxOccurs="unbounded" ref="Subitem2"/>
          <xs:element maxOccurs="unbounded" ref="Subitem3"/>
          <xs:element maxOccurs="unbounded" ref="Subitem4"/>
          <xs:element maxOccurs="unbounded" ref="Subitem5"/>
          <xs:element maxOccurs="unbounded" ref="Subitem6"/>
          <xs:element maxOccurs="unbounded" ref="Subitem7"/>
          <xs:element maxOccurs="unbounded" ref="Subitem8"/>
          <xs:element maxOccurs="unbounded" ref="Subitem9"/>
          <xs:element maxOccurs="unbounded" ref="Subitem10"/>
          <xs:element maxOccurs="unbounded" ref="List"/>
          <xs:element maxOccurs="unbounded" ref="Sentence"/>
          <xs:element maxOccurs="unbounded" ref="AmendProvision"/>
          <xs:element maxOccurs="unbounded" ref="AppdxTable"/>
          <xs:element maxOccurs="unbounded" ref="AppdxNote"/>
          <xs:element maxOccurs="unbounded" ref="AppdxStyle"/>
          <xs:element maxOccurs="unbounded" ref="Appdx"/>
          <xs:element maxOccurs="unbounded" ref="AppdxFig"/>
          <xs:element maxOccurs="unbounded" ref="AppdxFormat"/>
          <xs:element maxOccurs="unbounded" ref="SupplProvisionAppdxStyle"/>
          <xs:element maxOccurs="unbounded" ref="SupplProvisionAppdxTable"/>
          <xs:element maxOccurs="unbounded" ref="SupplProvisionAppdx"/>
          <xs:element ref="TableStruct"/>
          <xs:element maxOccurs="unbounded" ref="TableRow"/>
          <xs:element maxOccurs="unbounded" ref="TableColumn"/>
          <xs:element ref="FigStruct"/>
          <xs:element ref="NoteStruct"/>
          <xs:element ref="StyleStruct"/>
          <xs:element ref="FormatStruct"/>
          <xs:element ref="Remarks"/>
        </xs:choice>
        <xs:element ref="LawBody"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Class ================================================================= -->
  <xs:element name="Class">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="ClassTitle"/>
        <xs:element ref="ClassSentence"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Item"/>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="ClassTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="ClassSentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
        <xs:element ref="Table"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Item ================================================================== -->
  <xs:element name="Item">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="ItemTitle"/>
        <xs:element ref="ItemSentence"/>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="Subitem1"/>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="TableStruct"/>
            <xs:element ref="FigStruct"/>
            <xs:element ref="StyleStruct"/>
            <xs:element ref="List"/>
          </xs:choice>
        </xs:sequence>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="ItemTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="ItemSentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
        <xs:element ref="Table"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Subitem level1 ======================================================== -->
  <xs:element name="Subitem1">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Subitem1Title"/>
        <xs:element ref="Subitem1Sentence"/>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="Subitem2"/>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="TableStruct"/>
            <xs:element ref="FigStruct"/>
            <xs:element ref="StyleStruct"/>
            <xs:element ref="List"/>
          </xs:choice>
        </xs:sequence>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem1Title">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem1Sentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
        <xs:element ref="Table"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Subitem level2 ======================================================== -->
  <xs:element name="Subitem2">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Subitem2Title"/>
        <xs:element ref="Subitem2Sentence"/>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="Subitem3"/>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="TableStruct"/>
            <xs:element ref="FigStruct"/>
            <xs:element ref="StyleStruct"/>
            <xs:element ref="List"/>
          </xs:choice>
        </xs:sequence>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem2Title">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem2Sentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
        <xs:element ref="Table"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Subitem level3 ======================================================== -->
  <xs:element name="Subitem3">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Subitem3Title"/>
        <xs:element ref="Subitem3Sentence"/>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="Subitem4"/>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="TableStruct"/>
            <xs:element ref="FigStruct"/>
            <xs:element ref="StyleStruct"/>
            <xs:element ref="List"/>
          </xs:choice>
        </xs:sequence>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem3Title">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem3Sentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
        <xs:element ref="Table"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Subitem level4 ======================================================== -->
  <xs:element name="Subitem4">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Subitem4Title"/>
        <xs:element ref="Subitem4Sentence"/>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="Subitem5"/>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="TableStruct"/>
            <xs:element ref="FigStruct"/>
            <xs:element ref="StyleStruct"/>
            <xs:element ref="List"/>
          </xs:choice>
        </xs:sequence>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem4Title">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem4Sentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
        <xs:element ref="Table"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Subitem level5 ======================================================== -->
  <xs:element name="Subitem5">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Subitem5Title"/>
        <xs:element ref="Subitem5Sentence"/>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="Subitem6"/>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="TableStruct"/>
            <xs:element ref="FigStruct"/>
            <xs:element ref="StyleStruct"/>
            <xs:element ref="List"/>
          </xs:choice>
        </xs:sequence>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem5Title">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem5Sentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
        <xs:element ref="Table"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Subitem level6 ======================================================== -->
  <xs:element name="Subitem6">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Subitem6Title"/>
        <xs:element ref="Subitem6Sentence"/>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="Subitem7"/>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="TableStruct"/>
            <xs:element ref="FigStruct"/>
            <xs:element ref="StyleStruct"/>
            <xs:element ref="List"/>
          </xs:choice>
        </xs:sequence>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem6Title">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem6Sentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
        <xs:element ref="Table"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Subitem level7 ======================================================== -->
  <xs:element name="Subitem7">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Subitem7Title"/>
        <xs:element ref="Subitem7Sentence"/>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="Subitem8"/>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="TableStruct"/>
            <xs:element ref="FigStruct"/>
            <xs:element ref="StyleStruct"/>
            <xs:element ref="List"/>
          </xs:choice>
        </xs:sequence>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem7Title">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem7Sentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
        <xs:element ref="Table"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Subitem level8 ======================================================== -->
  <xs:element name="Subitem8">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Subitem8Title"/>
        <xs:element ref="Subitem8Sentence"/>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="Subitem9"/>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="TableStruct"/>
            <xs:element ref="FigStruct"/>
            <xs:element ref="StyleStruct"/>
            <xs:element ref="List"/>
          </xs:choice>
        </xs:sequence>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem8Title">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem8Sentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
        <xs:element ref="Table"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Subitem level9 ======================================================== -->
  <xs:element name="Subitem9">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Subitem9Title"/>
        <xs:element ref="Subitem9Sentence"/>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="Subitem10"/>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="TableStruct"/>
            <xs:element ref="FigStruct"/>
            <xs:element ref="StyleStruct"/>
            <xs:element ref="List"/>
          </xs:choice>
        </xs:sequence>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem9Title">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem9Sentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
        <xs:element ref="Table"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Subitem level10 ======================================================== -->
  <xs:element name="Subitem10">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Subitem10Title"/>
        <xs:element ref="Subitem10Sentence"/>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="TableStruct"/>
          <xs:element ref="FigStruct"/>
          <xs:element ref="StyleStruct"/>
          <xs:element ref="List"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="Num" use="required"/>
      <xs:attribute name="Delete" type="xs:boolean" default="false"/>
      <xs:attribute name="Hide" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem10Title">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subitem10Sentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
        <xs:element ref="Table"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Sentence ============================================================== -->
  <xs:element name="Sentence">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="QuoteStruct"/>
        <xs:element ref="ArithFormula"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
      <xs:attribute name="Num" type="xs:positiveInteger"/>
      <xs:attribute name="Function">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="main"/>
            <xs:enumeration value="proviso"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="Indent">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Paragraph"/>
            <xs:enumeration value="Item"/>
            <xs:enumeration value="Subitem1"/>
            <xs:enumeration value="Subitem2"/>
            <xs:enumeration value="Subitem3"/>
            <xs:enumeration value="Subitem4"/>
            <xs:enumeration value="Subitem5"/>
            <xs:enumeration value="Subitem6"/>
            <xs:enumeration value="Subitem7"/>
            <xs:enumeration value="Subitem8"/>
            <xs:enumeration value="Subitem9"/>
            <xs:enumeration value="Subitem10"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="WritingMode" default="vertical">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="vertical"/>
            <xs:enumeration value="horizontal"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <!--  Column ================================================================ -->
  <xs:element name="Column">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
      </xs:sequence>
      <xs:attribute name="Num" type="xs:positiveInteger"/>
      <xs:attribute name="LineBreak" type="xs:boolean" default="false"/>
      <xs:attribute name="Align">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="left"/>
            <xs:enumeration value="center"/>
            <xs:enumeration value="right"/>
            <xs:enumeration value="justify"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <!--  SupplProvision ======================================================== -->
  <xs:element name="SupplProvision">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="SupplProvisionLabel"/>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="Chapter"/>
          <xs:element ref="Article"/>
          <xs:element ref="Paragraph"/>
        </xs:choice>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="SupplProvisionAppdxTable"/>
          <xs:element ref="SupplProvisionAppdxStyle"/>
          <xs:element ref="SupplProvisionAppdx"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="Type">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="New"/>
            <xs:enumeration value="Amend"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="AmendLawNum"/>
      <xs:attribute name="Extract" type="xs:boolean"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="SupplProvisionLabel">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="SupplProvisionAppdxTable">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="SupplProvisionAppdxTableTitle"/>
        <xs:element minOccurs="0" ref="RelatedArticleNum"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="TableStruct"/>
      </xs:sequence>
      <xs:attribute name="Num" type="xs:positiveInteger"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="SupplProvisionAppdxTableTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
      <xs:attribute name="WritingMode" default="vertical">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="vertical"/>
            <xs:enumeration value="horizontal"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="SupplProvisionAppdxStyle">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="SupplProvisionAppdxStyleTitle"/>
        <xs:element minOccurs="0" ref="RelatedArticleNum"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="StyleStruct"/>
      </xs:sequence>
      <xs:attribute name="Num" type="xs:positiveInteger"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="SupplProvisionAppdxStyleTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
      <xs:attribute name="WritingMode" default="vertical">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="vertical"/>
            <xs:enumeration value="horizontal"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="SupplProvisionAppdx">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="ArithFormulaNum"/>
        <xs:element minOccurs="0" ref="RelatedArticleNum"/>
        <xs:element maxOccurs="unbounded" ref="ArithFormula"/>
      </xs:sequence>
      <xs:attribute name="Num" type="xs:positiveInteger"/>
    </xs:complexType>
  </xs:element>
  <!--  AppdxTable ============================================================ -->
  <xs:element name="AppdxTable">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="AppdxTableTitle"/>
        <xs:element minOccurs="0" ref="RelatedArticleNum"/>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element maxOccurs="unbounded" ref="TableStruct"/>
          <xs:element maxOccurs="unbounded" ref="Item"/>
        </xs:choice>
        <xs:element minOccurs="0" ref="Remarks"/>
      </xs:sequence>
      <xs:attribute name="Num" type="xs:positiveInteger"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="AppdxTableTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
      <xs:attribute name="WritingMode" default="vertical">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="vertical"/>
            <xs:enumeration value="horizontal"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <!--  AppdxNote ============================================================= -->
  <xs:element name="AppdxNote">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="AppdxNoteTitle"/>
        <xs:element minOccurs="0" ref="RelatedArticleNum"/>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="NoteStruct"/>
          <xs:element ref="FigStruct"/>
          <xs:element ref="TableStruct"/>
        </xs:choice>
        <xs:element minOccurs="0" ref="Remarks"/>
      </xs:sequence>
      <xs:attribute name="Num" type="xs:positiveInteger"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="AppdxNoteTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
      <xs:attribute name="WritingMode" default="vertical">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="vertical"/>
            <xs:enumeration value="horizontal"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <!--  AppdxStyle ============================================================ -->
  <xs:element name="AppdxStyle">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="AppdxStyleTitle"/>
        <xs:element minOccurs="0" ref="RelatedArticleNum"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="StyleStruct"/>
        <xs:element minOccurs="0" ref="Remarks"/>
      </xs:sequence>
      <xs:attribute name="Num" type="xs:positiveInteger"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="AppdxStyleTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
      <xs:attribute name="WritingMode" default="vertical">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="vertical"/>
            <xs:enumeration value="horizontal"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <!--  AppdxFormat =========================================================== -->
  <xs:element name="AppdxFormat">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="AppdxFormatTitle"/>
        <xs:element minOccurs="0" ref="RelatedArticleNum"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="FormatStruct"/>
        <xs:element minOccurs="0" ref="Remarks"/>
      </xs:sequence>
      <xs:attribute name="Num" type="xs:positiveInteger"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="AppdxFormatTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
      <xs:attribute name="WritingMode" default="vertical">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="vertical"/>
            <xs:enumeration value="horizontal"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <!--  Appdx ================================================================= -->
  <xs:element name="Appdx">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="ArithFormulaNum"/>
        <xs:element minOccurs="0" ref="RelatedArticleNum"/>
        <xs:element maxOccurs="unbounded" ref="ArithFormula"/>
        <xs:element minOccurs="0" ref="Remarks"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ArithFormulaNum">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="ArithFormula">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="any">
          <xs:attribute name="Num" type="xs:positiveInteger"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <!--  AppdxFig ============================================================== -->
  <xs:element name="AppdxFig">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="AppdxFigTitle"/>
        <xs:element minOccurs="0" ref="RelatedArticleNum"/>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="FigStruct"/>
          <xs:element ref="TableStruct"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="Num" type="xs:positiveInteger"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="AppdxFigTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
      <xs:attribute name="WritingMode" default="vertical">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="vertical"/>
            <xs:enumeration value="horizontal"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <!--  Table ================================================================= -->
  <xs:element name="TableStruct">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="TableStructTitle"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Remarks"/>
        <xs:element ref="Table"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Remarks"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="TableStructTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
      <xs:attribute name="WritingMode" default="vertical">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="vertical"/>
            <xs:enumeration value="horizontal"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="Table">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="TableHeaderRow"/>
        <xs:element maxOccurs="unbounded" ref="TableRow"/>
      </xs:sequence>
      <xs:attribute name="WritingMode" default="vertical">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="vertical"/>
            <xs:enumeration value="horizontal"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="TableRow">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="TableColumn"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="TableHeaderRow">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="TableHeaderColumn"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="TableHeaderColumn">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="TableColumn">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Part"/>
        <xs:element maxOccurs="unbounded" ref="Chapter"/>
        <xs:element maxOccurs="unbounded" ref="Section"/>
        <xs:element maxOccurs="unbounded" ref="Subsection"/>
        <xs:element maxOccurs="unbounded" ref="Division"/>
        <xs:element maxOccurs="unbounded" ref="Article"/>
        <xs:element maxOccurs="unbounded" ref="Paragraph"/>
        <xs:element maxOccurs="unbounded" ref="Item"/>
        <xs:element maxOccurs="unbounded" ref="Subitem1"/>
        <xs:element maxOccurs="unbounded" ref="Subitem2"/>
        <xs:element maxOccurs="unbounded" ref="Subitem3"/>
        <xs:element maxOccurs="unbounded" ref="Subitem4"/>
        <xs:element maxOccurs="unbounded" ref="Subitem5"/>
        <xs:element maxOccurs="unbounded" ref="Subitem6"/>
        <xs:element maxOccurs="unbounded" ref="Subitem7"/>
        <xs:element maxOccurs="unbounded" ref="Subitem8"/>
        <xs:element maxOccurs="unbounded" ref="Subitem9"/>
        <xs:element maxOccurs="unbounded" ref="Subitem10"/>
        <xs:element maxOccurs="unbounded" ref="FigStruct"/>
        <xs:element ref="Remarks"/>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
      </xs:choice>
      <xs:attribute name="BorderTop" default="solid">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="solid"/>
            <xs:enumeration value="none"/>
            <xs:enumeration value="dotted"/>
            <xs:enumeration value="double"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="BorderBottom" default="solid">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="solid"/>
            <xs:enumeration value="none"/>
            <xs:enumeration value="dotted"/>
            <xs:enumeration value="double"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="BorderLeft" default="solid">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="solid"/>
            <xs:enumeration value="none"/>
            <xs:enumeration value="dotted"/>
            <xs:enumeration value="double"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="BorderRight" default="solid">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="solid"/>
            <xs:enumeration value="none"/>
            <xs:enumeration value="dotted"/>
            <xs:enumeration value="double"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="rowspan"/>
      <xs:attribute name="colspan"/>
      <xs:attribute name="Align">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="left"/>
            <xs:enumeration value="center"/>
            <xs:enumeration value="right"/>
            <xs:enumeration value="justify"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="Valign">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="top"/>
            <xs:enumeration value="middle"/>
            <xs:enumeration value="bottom"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <!--  Fig =================================================================== -->
  <xs:element name="FigStruct">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="FigStructTitle"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Remarks"/>
        <xs:element ref="Fig"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Remarks"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="FigStructTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Fig">
    <xs:complexType>
      <xs:attribute name="src" use="required"/>
    </xs:complexType>
  </xs:element>
  <!--  Note ================================================================== -->
  <xs:element name="NoteStruct">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="NoteStructTitle"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Remarks"/>
        <xs:element ref="Note"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Remarks"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="NoteStructTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Note" type="any"/>
  <!--  Style ================================================================= -->
  <xs:element name="StyleStruct">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="StyleStructTitle"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Remarks"/>
        <xs:element ref="Style"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Remarks"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="StyleStructTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Style" type="any"/>
  <!--  Format ================================================================ -->
  <xs:element name="FormatStruct">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="FormatStructTitle"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Remarks"/>
        <xs:element ref="Format"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Remarks"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="FormatStructTitle">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Format" type="any"/>
  <!--  Common ================================================================ -->
  <xs:element name="RelatedArticleNum">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Remarks =============================================================== -->
  <xs:element name="Remarks">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="RemarksLabel"/>
        <xs:choice>
          <xs:element maxOccurs="unbounded" ref="Item"/>
          <xs:element maxOccurs="unbounded" ref="Sentence"/>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="RemarksLabel">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Line"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
      <xs:attribute name="LineBreak" type="xs:boolean" default="false"/>
    </xs:complexType>
  </xs:element>
  <!--  List ================================================================== -->
  <xs:element name="List">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ListSentence"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Sublist1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ListSentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Sublist level1========================================================= -->
  <xs:element name="Sublist1">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Sublist1Sentence"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Sublist2"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Sublist1Sentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Sublist level2========================================================= -->
  <xs:element name="Sublist2">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Sublist2Sentence"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Sublist3"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Sublist2Sentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  Sublist level3========================================================= -->
  <xs:element name="Sublist3" type="Sublist3Sentence"/>
  <xs:complexType name="Sublist3Sentence">
    <xs:sequence>
      <xs:element ref="Sublist3Sentence"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Sublist3Sentence">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="Sentence"/>
        <xs:element maxOccurs="unbounded" ref="Column"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--  QuoteStruct =========================================================== -->
  <xs:element name="QuoteStruct" type="any"/>
  <!--  Ruby ================================================================== -->
  <xs:element name="Ruby">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Rt"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Rt" type="xs:string"/>
  <!--  Line ================================================================== -->
  <xs:element name="Line">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="QuoteStruct"/>
        <xs:element ref="ArithFormula"/>
        <xs:element ref="Ruby"/>
        <xs:element ref="Sup"/>
        <xs:element ref="Sub"/>
      </xs:choice>
      <xs:attribute name="Style" default="solid">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="dotted"/>
            <xs:enumeration value="double"/>
            <xs:enumeration value="none"/>
            <xs:enumeration value="solid"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <!--  Sup =================================================================== -->
  <xs:element name="Sup" type="xs:string"/>
  <!--  Sub =================================================================== -->
  <xs:element name="Sub" type="xs:string"/>
  <xs:complexType name="any" mixed="true">
    <xs:sequence>
      <xs:any minOccurs="0" maxOccurs="unbounded" processContents="strict"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>
