子要素とテキストを混在できる要素を定義する - XML スキーマ - XML プログラミング

PROGRAM


子要素とテキストを混在できる要素を定義する

XML スキーマでは、テキストと要素とを値として持てる要素を定義することができます。

たとえば、任意の要素とテキストとが自由に登場できるデータ型を定義すると、次のような感じになります。

<xsd:complexType name="フリーフォーマット" mixed="true">

<xsd:choice>

<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="skip" />

</xsd:choice>

</xsd:complexType>

ここで、接頭辞 xsd は、名前空間 "http://www.w3.org/2001/XMLSchema" です。

 

この定義の中で重要なのが、mixed="true" というところでしょうか。

これを指定することで、その下で定義されている要素の前後に自由にテキスト (DOMText) が登場しても良くなります。

ここでは <xsd:any> に minOccurs="0" と maxOccurs="unbounded" という属性をつけることで、どんな要素が何個登場してもいいという定義になっていて、それぞれの前後にテキストが登場してもいいことになるので、要素とテキストとが混在した値を持つことができるようになります。

ここでは <xsd:any> として任意の要素としましたが、<xsd:element> を使うことで、登場する要素の名前や順番、個数を指定することも可能です。


[ もどる ]