⑥XMLスキーマで階層構造の定義(出現順番が決まっている場合)

XMLスキーマの書き方について、学んだ事を書いていきます。


XMLスキーマで階層構造を定義してみます。(出現順番が決まっている場合)
簡単なサンプルを作ってみます。


■Sequence.xml

<?xml version="1.0"  encoding="UTF-8"?>
<nameList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Sequence.xsd">
  <id>1</id>
  <name>hogehoge</name>
</nameList>


■Sequence.xsd

<?xml version="1.0"  encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="nameList" type="nameListType" />

  <xsd:complexType name="nameListType">
    <xsd:sequence>
      <xsd:element name="id" type="xsd:string"/>
      <xsd:element name="name" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>

</xsd:schema>


「nameListType」を定義しました。
タグの子要素は、タグとタグです。
タグ、タグの順で出現する必要があります。

<xsd:complexType name="nameListType">
    <xsd:sequence>
      <xsd:element name="id" type="xsd:string"/>
      <xsd:element name="name" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>


Eclipseで、XMLスキーマ検証してみます。
XMLファイルを開いて、右クリックメニューの「検証」で、XMLスキーマ検証します。


エラーは出ませんね。


Sequence.xmlタグ、タグの順番を入れ替えて、検証してみます。
■Sequence.xml

<?xml version="1.0"  encoding="UTF-8"?>
<nameList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Sequence.xsd">
  <name>hogehoge</name>
  <id>1</id>
</nameList>


「Sequence.xsd」では、タグ、タグの順で出現する必要があるので、検証エラーになります。