さてさてお久しぶりの XML Schema の型話です。
しばらく放置してましたね(汗)
XML Schema については、まだまだメモっておきたいことがたくさんあるので、じっくり書いていきましょう。
早く先に進みたい気持ちもありますが。
さて、タイトルを見て「ん?」と思った人。
あなたは正しいです。
単純型を制限してどうして複合型になるのでしょう?
要するに xsd:simpleContent の子供に xsd:restriction を指定するパターンですが、これは内容モデルというところがミソです。
サンプルを見てみましょう。
<xsd:complexType name="type1">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="attr1" type="xsd:string"/>
<xsd:attribute name="attr2" type="xsd:integer"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="type2">
<xsd:simpleContent>
<xsd:restriction base="type1">
<xsd:maxLength value="10"/>
<xsd:attribute name="attr2" use="prohibited"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
要するに、以前お話した「単純型を拡張した複合型」を制限するわけです。
要素内容に対する制限(今回は最大長10文字までに制限してます)と属性の禁止を行ってます。
ま、要はあれですよね。まず、使いません。
結局のところ
- 複合型を拡張した複合型
- 複合型を制限した複合型
- 単純型を拡張した複合型
- 単純型を制限した複合型
どれも別に使う必要ないやって結論になりました(あらら・・・)
さて、次回からは制約ファセットに行きますか