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

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

 前回は『DTD』と『XML Schema』の異なる点と記述例について書きましたが、今回は『XML Schema』の記述例についてもう少し具体的に説明いきたいと思います。

●前回の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>

 では、1行目から確認していきましょう。

 1行目はXML宣言です。XML SchemaはXMLの構造を表すための言語ですが、XML Schemaそれ自体もXML文書ですので、XMLの文法に沿って要素や属性を記述しなければなりません。

 次に2行目はルート要素を示しておりXML Schemaのルート要素は“schema”になります。
ですが、要素名“schema”の頭に、“xsd:”という文字列が記述されていますが、これは『名前空間』と呼ばれる代物です。

 ところで名前空間とは何かというと、XMLでは、要素や属性などを自由に作成することができますので、もしかしたらschemaという名前の要素が、どこかでまったく別の用途に使用されているかもしれません。
 そこで、「ここでのschemaという要素は、XML Schemaで定義されたものである」ということを、明確に指示する必要があり、そのためXMLには名前空間と呼ばれる仕組みが用意されています。

 

undefined

 

 「xmlns:xsd="http://www.w3.org/2001/XMLSchema"」※1の部分ですが、「要素名の先頭にxsd:と付いたら、“http://www.w3.org/2001/XMLSchema”で定義された要素である」と宣言しています。これを『名前空間宣言』といいます。
 また、“xsd”を使って“xsd:schema”と書くと、「XML Schemaのschema要素」という意味になり、この例の“xsd”のことを、『名前空間接頭辞※2といいます。

 やっと3行目からXML文書の構造定義について表記していくのですが、前回同様に今回も説明が長くなってしまいましたので、次回に詳しい説明をしたいと思います。


※1 “http://www.w3.org/2001/XMLSchema”はXML Schemaを表す識別子(名前空間URI)なのですが、特にURIに決まりはなく他と違えばなんでもよいのですが、“http://www.w3.org/2001/XMLSchema”をURIとして使用することが多いようです。

※2 名前空間接頭辞は単に各要素を結びつける役割を果たすだけの文字列ですので、“xsd”だけではなく任意の文字列を使用することができます。

参考サイト:SEのためのXML Schema入門(1):簡単なXML Schemaから始めよう - @IT