- PR -

XMLSchemaにてrestrictionとextensionを同時に使えますか?

1
投稿者投稿内容
にこ坊
会議室デビュー日: 2002/03/15
投稿数: 6
お住まい・勤務地: 岡山県
投稿日時: 2004-01-13 17:32
XMLSchemaにて型宣言する際、restrictionとextensionを同時に使えますか?
型の範囲等の制限をしつつ、ID等の属性も指定したいのですが。
今はまず型制限をした型を作成し、それを基にして属性指定した型を作成しています。
でも、一度にできるととても楽だなぁと思いまして。
TAKABE
常連さん
会議室デビュー日: 2003/05/14
投稿数: 43
投稿日時: 2004-01-14 11:20
 にこ坊さま、こんにちは。
 これは「あるデータ型Aを制限したデータ型Bを作成し、そのデータ型BにID型の属性を付加したい」という問題ですよね。これはやはり一度には無理だと思います。

 xs:extensionを使って属性を付加するわけですが、このxs:extensionの内容は、xs:extensionがxs:simpleContentの子要素である場合は、

( xs:annotation?,
(xs:attribute | xs:attributeGroup)*, xs:anyAttribute?))

 の形をとりますし、xs:extensionがxs:complexContentの子要素である場合は、

( xs:annotation?,
((xs:group | xs:all | xs:choice | xs:sequence)?,
((xs:attribute | xs:attributeGroup)*, xs:anyAttribute?)))

 の形をとります。直接、匿名のデータ型を内容としてとるべきことができず、またどちらの場合もbase属性が必須でこちらにデータ型を指定するようになっています。
 xs:simnpleTypeまたはxs:simpleContentの子要素として出現するxs:restrictionが、匿名のデータ型として基底型となるxs:simpleTypeを内容としてとるような場合は、二重のxs:restrictionを使えたりするのですが、にこ坊さまのケースの場合は、一度には無理だと思われます。
1

スキルアップ/キャリアアップ(JOB@IT)