XML文書の構造定義について(4)

19/09/16

IT・情報処理室のMです。

 前回はXML Schema記述例の2行目までしか説明できませんでしたが、今回は残りの行を見ていきたいと思います。

●前回のXML Schema記述例
 <?xml version="1.0"?>
 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:element name="root">
   <xsd:complexType>
    <xsd:sequence>
     <xsd:element ref="data" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="age" type="xsd:nonNegativeInteger" use="required" />
   </xsd:complexType>
  </xsd:element>
  <xsd:element name="data">
    <xsd:complexType>
    <xsd:sequence>
     <xsd:element name=" firstName " type="xsd:string" />
     <xsd:element name=" lastName " type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
 </xsd:schema>

 

  それでは、残りの行を見ていきましょう。

 3行目ではXMLの構造について表現します。今回作成するXML文書のルート要素名は「root」ですので、name属性の値は「root」となります。

 4~9行目までは要素の型定義を表現しています。
 6行目では『xsd:element ref="data"』と宣言していますが、name属性を使用せずにref属性を使用しています。
 ref属性を記述した場合、要素の構造については別の場所で宣言します。そして、ref属性の値に記されている要素、つまり11行目の『xsd:element name="data"』を参照していることになります。 

undefined

 

  また、『minOccurs="0" maxOccurs="unbounded"』と記述されていますが、同じ要素が繰り返し出現する場合は、minOccurs属性およびmaxOccurs属性を使用します。minOccurs属性は、「要素を最低何回記述しなければならないか」を指定する属性で、maxOccurs属性は、「要素を何個まで書くことができるか」を指定します。今回のようにminOccurs属性の値に「0」、maxOccurs属性の値に「unbounded」を指定した場合は、「data要素を0個以上何個でも記述することができる」ことを表しています。

 8行目では属性を定義していますが、属性を定義する際は『xsd:attribute』要素を使用して宣言します。属性の名前は、要素と同じようにname属性の値に指定します。ここでは「age」という名前の属性を宣言するので、name属性の値には「age」と記述します。
 また、『type="xsd:nonNegativeInteger" use="required"』と記述されていますが、type属性は属性のデータ型(属性値としてどのような値が記述できるか)を記述し、use属性は属性の必須/任意や固定値指定などを記述します。今回のようにtype属性の値に「xsd:nonNegativeInteger」、use属性の値に「required」を指定した場合は、「0以上の整数を必ず記述しなければならない」ことを表しています。

 11~18行目までは要素である「data」を定義しており、19行目は終了タグとなります。

 今回もそうですがXML Schemaについて駆け足での説明になってしまいましたが、少しでもXMLに興味を持っていただけたら嬉しいです (*⌒▽⌒*)。


参考サイト:SEのためのXML Schema入門(1)~(3)- @IT