属性の定義

前回まではXML Schemaにより要素を取り決める方法について見てきました。今回はもう1つのXMLの重要な構成要素となる「属性」について説明します。属性とはその名のとおり、要素に情報を付加するためのものです。

XML Schemaではその「属性」についてもDTDより細かく取り決めることができます。

属性を取り決める

XML Schemaによって属性を取り決める方法について見ていきます。まずは、次のサンプルを見てください。

<?xml version="1.0" encoding="UTF-8" ?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="books">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="book" />
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  
  <xsd:element name="book">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="title" type="xsd:string" />
        <xsd:element name="price" type="xsd:decimal" />
      </xsd:sequence>
      <xsd:attribute name="id" type="xsd:string" use="required" />
      <xsd:attribute name="lang" type="xsd:string" default="JP"/>
    </xsd:complexType>
  </xsd:element>

</xsd:schema>

「book」要素は「id」属性と「lang」属性を持つことを取り決めています。「id」という名前の属性を取り決めているので、name属性の値には「id」と記述します。また、属性のデータ型は、要素の取り決めと同じくtype属性を使用して指定します。

属性が「必ず指定しなければいけないのか、省略してもよいのか」を取り決めるには、「xsd:attribute」要素の「use」属性で指定します。上記サンプルでは「id」属性の取り決めで、同属性を「必ず指定しなければいけない」ことを示すrequiredとしています。

属性値 説明
required 必ず属性を指定しなければならない
optional 属性を省略できる
prohibited 属性を禁止する

XML Schemaでは、属性が書かれていない場合に使用する属性のデフォルト値を取り決めることもできます。属性のデフォルト値は、「xsd:attribute」要素の「default」属性を使用して指定します。