属性グループを参照する
属性グループを定義したら、それらの属性が必要な場所でその属性グループを参照します。
1. 複雑型定義内で含める要素を宣言した後に、<xsd:attributeGroup と入力します。
2. ref="label" / >
labelの部分には、前ページの手順で設定した属性グループの名前を入力します。
XSDコード <xsd:element name="pictures">
<xsd:complexType>
<xsd:complexContent>
<xsd:restriction base=""xsd:anyType" >
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="video">
<xsd:complexType>
<xsd:complexContent>
<xsd:restriction base=""xsd:anyType" >
<xsd:sequence>
<xsd:element name="description" type="xsd:string" / >
<xsd:element name="running_time" type="xsd:timeDuration" / >
<xsd:element name="description" type="xsd:string" / >
</xsd:sequence>
<xsd:attributeGroup ref="imageAtts" / >
<xsd:attribute name="format" type="xsd:string" / >
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
</xsd:element >3つの属性をいちいち繰り返すよりも、ref="imageAtts"と入力するほうが間違いもなくずっと簡単です。video要素ではさらにformat属性も宣言しています。
XMLコード <picture filename="abd-xray2007050801001.jpg" x="800" y="1200" / >
<video filename="obs-2007051001001.mp3 x="550" y="400" format="MPEG3" >
picture要素とvideo要素は両方ともfilename属性、x属性、y属性を持ちますが、これらの属性は1回定義するだけですみます。
・属性グループは、DTDのパラメータエンティティに似ています。ただし、当然ながら属性しか表すことができません。
・属性(および属性グループ)は、必ず要素の宣言が終わってから、コンポーネントの最後に宣言します。