- PR -

XMLスキーマの書き方

1
投稿者投稿内容
セイン
常連さん
会議室デビュー日: 2005/06/15
投稿数: 24
投稿日時: 2008-10-10 22:22
お世話になっております。

XMLスキーマの書き方について教えてください。

NGの場合
<Result type="NG">
</Result>

OKの場合
<Result type="OK">
<DATA1>100</DATA1>
<DATA2>100</DATA2>
</Result>


上記のようなXMLが存在した場合、
typeがNGならDATA1 DATA2があればNG typeOKならDATA1 DATA2がなければNGと
したいのですが、そういったスキーマを記述できるのでしょうか?

よろしくお願いします。
セイン
常連さん
会議室デビュー日: 2005/06/15
投稿数: 24
投稿日時: 2008-10-10 22:30
追加でもう一点教えてください。

OK
<Result>
</Result>

OK
<Result>
<DATA1>100</DATA1>
<DATA2>100</DATA2>
<DATA3>100</DATA3>
</Result>


NG
<Result>
<DATA1>100</DATA1>
<DATA3>100</DATA3>
</Result>


すべての要素がなければスキーマチェックOK
すべての要素があればスキーマチェックOK
ひとつでも要素がそろっていなければスキーマチェックNG

こういったスキーマはかけるのでしょうか?
茶ぴお
会議室デビュー日: 2008/10/13
投稿数: 2
お住まい・勤務地: 大阪府
投稿日時: 2008-10-13 20:05
茶ぴおと申します。
私自身、勉強中の身なのでご参考までに。

1つ目の方は,W3C XML Schema で書けるかどうかはよく知りませんが,
Relax NG なら書けると思います。
以下のところの「付録 B.2.2 属性に依存する内容モデル」あたりが
参考になると思います。
http://www.kohsuke.org/relaxng/tutorial.ja.html

もう一つの方は、内容モデルをDTD風に書くと
<!ELEMENT Result (Data1, Data2, Data3)? >
で良いでしょうか?
これで良いなら,W3C XML SchemaやRelaxNGでも書けると思います。
セイン
常連さん
会議室デビュー日: 2005/06/15
投稿数: 24
投稿日時: 2008-10-14 09:34
勉強不足ですいません。

現在スキーマチェックにはxsdをつかっているのですが、
教えていただきましたRelaxNGに置き換えようとすると、
スキーマファイル全体を修正する必要がでてくるのでしょうか?

お願いします。
茶ぴお
会議室デビュー日: 2008/10/13
投稿数: 2
お住まい・勤務地: 大阪府
投稿日時: 2008-10-14 18:54
書き込んだ後に気づいたのですが,W3C XML Schema で書けるかという
話だったんですね。

W3C XML Schema と RelaxNG はどちらもXMLのスキーマ記述言語ですが,
違う言語ですのでスキーマ全体を書き換える必要があります。ただ,
そもそも.NET Frameworkのスキーマ定義ツール(xsd.exe?)は RelaxNG を
対象にしていないように見えます。(違っていたらすみません。)
RelaxNG も対象とするような代替ツールがあるのかどうかは,すみませんが
よく知りません。このあたりについては私自身勉強不足です。

あんまり役に立てなくてすみません。
1

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