目次へ

2.4 子供要素

Complex Type型は、element要素で宣言・指定されている要素が、子供要素として含まれます。

<xsd:complexType name="PurchaseOrderType">
   <xsd:sequence>
     <xsd:element name="shipTo" type="po:USAddress"/>
     <xsd:element name="billTo" type="po:USAddress"/>
     <xsd:element ref="po:comment" minOccurs="0"/>
     <xsd:element name="items"  type="Items"/>
   </xsd:sequence>
   <xsd:attribute name="orderDate" type="xsd:date"/>
</xsd:complexType>

上の例では、PurchaseOrderTypeという名前のComplex Typeを定義しています。complexType要素の内容には、4つのelement要素が含まれています。よって、PurchaseOrderTypeは4種類の子供要素を含む方であることがわかります。

子供要素を指定する場合は、新たに宣言する場合と、既存の要素を参照する場合があります。既存の要素を参照する際は、ref属性を使用します。

<element ref="要素の名前"/> 

PurchaseOrderTypeの定義の3つの要素、shipTo、billTo、itemsは新たに宣言されている要素です。新規に要素が宣言された場合は、name属性が存在します。対して、3つ目の要素は、既に宣言されているcomment要素を参照しています。 参照している場合、ref属性が存在します。

要素には、2種類あります。schema要素の直下で宣言されているものと、Complex Type定義の中で宣言されているものです。前者をグローバル要素といいます。後者をローカル要素といいます。po.xsdでは、purchaseOrderおよびcommentの2つの要素がグローバル要素になります。それ以外のshipTo等の要素はすべてローカル要素です。グローバル要素、ローカル要素には、以下の制限があります。

  • ルート要素は必ず、グローバル要素として宣言しなければなりません。
  • グローバル要素の宣言の際に、他の要素を参照することはできません。
  • 参照できるのはグローバル要素のみです。

DTDには、ローカル、グローバルという考え方はなく、要素はすべてグローバル要素になります。ローカル要素は、XML Schemaにより新たに導入された考え方です。グローバル、ローカルといった考え方は、Namespaceと関係しています。詳細は、Namespaceのところで詳しく説明します。 

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp