- PR -

complexTypeのチェックについて

1
投稿者投稿内容
クレイサー
会議室デビュー日: 2005/12/05
投稿数: 2
投稿日時: 2005-12-05 21:04
以下のチェックをXml Schemaにて
記述したいのですが、行き詰っております。
識者の方々に何かヒントを頂ければと思い、
投稿致しました。

【実現したい内容】
・AAAタグとBBBタグは同一階層に存在する
・AAAタグとBBBタグの記述順は不定である
・AAAタグとBBBタグはそれぞれ最低1回は記述される必要がある
・AAAタグとBBBタグは複数回の記述を許容する

【現在までに試行した内容】
案1:(maxOccurs部分がSchemaの仕様に違反⇒NG)
<xsd:complexType>
<xsd:all>
<xsd:element name="AAA" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="BBB" minOccurs="1" maxOccurs="unbounded"/>
</xsd:all>
</xsd:complexType>

案2:(AAA・BBBタグが記述されていなくても、OKとなる⇒NG)
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="AAA" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="BBB" minOccurs="1" maxOccurs="unbounded"/>
</xsd:all>
</xsd:complexType>

何かご存知の方がおられましたら、アドバイスを頂けると幸いです。
よろしくお願いいたします。
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2005-12-06 12:31
XML Schemaでは無理な気がしますね。mixed="true"にして、「空白以外のテキストが入ってたらエラー」「AAAかBBBが存在しないならエラー」はアプリケーションでチェックするのが良いのではないでしょうか。
TAKABE
常連さん
会議室デビュー日: 2003/05/14
投稿数: 43
投稿日時: 2005-12-06 15:06
 クレイサーさま、こんにちは。

>・AAAタグとBBBタグは同一階層に存在する
>・AAAタグとBBBタグの記述順は不定である
>・AAAタグとBBBタグはそれぞれ最低1回は記述される必要がある
>・AAAタグとBBBタグは複数回の記述を許容する

 この4つの条件すべてを満たすスキーマをW3C XML Schemaで書くのはやはり無理かと思います。
 私でしたら、「AAAタグとBBBタグはそれぞれ最低1回は記述される必要がある」の条件についてをあきらめて、どうしてもこれをチェックしたい場合についてはSchematronのような別の手段でチェックできないかどうかを考えます。
 またこの場合、choiceを使っても悪くないのですが、代替グループのテクニック
http://www.cityfujisawa.ne.jp/~yanai/xml/schema/step31.html
 を使うほうが、個人的にはすっきりした感じがあって好きだったりします。

_________________
クレイサー
会議室デビュー日: 2005/12/05
投稿数: 2
投稿日時: 2005-12-06 20:43
スフレ様 TAKABE様

XML Schema単独では無理でしたか。。。

・プログラム内での自前でのチェックと並行して実施
・記述順固定としてSequenceで記述

の2点で再検討してみます。
的確なご解答、ありがとうございました。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-12-15 17:14
8. 順序なし内容モデル
http://www.kohsuke.org/relaxng/tutorial.ja.html#IDAA1YR
記述できそうな pho
1

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