質問

私はこれが関係していると信じています keyref しかし、私は確信していません、そして、それがまったくできるかどうかは本当にわかりません。

たとえば、MyElement1とMyElement2を持っているとします。 XMLファイルにmyElement2がない場合、myElement1が存在する必要があります。それ以外の場合はオプションです。

XSDファイルにこのタイプの検証を強制する方法はありますか?

役に立ちましたか?

解決

同様の質問が何度か尋ねられています。StackoverFlowまたは技術ブログで..

しかし、答えは常にです ありえない,


のようなケース:

(a)他の要素/属性の値または存在に応じて要素を検証する
(b)他の要素/属性の値または存在に応じて要素の値を検証する
(c)他の要素/属性の値または存在に応じて属性を検証する
(d)同じ範囲の下で異なるタイプ/データ型を持つ同じ名前の要素/属性の定義
(e)他の要素/属性の価値または存在に基づいて子要素を検証する

上記のすべてのケースは達成することはできません。

しかし、いくつかの変換のことを実装できれば..助けを得ることができます。私が言うことは、「最初に変換を経て、要件に従ってXMLを変更することです。

例::特定のフィールドが何らかの値で予想される場合..条件が満たされていない場合のようにXMLを渡し、そうでない場合に合格しないでください。 :)カスタム検証が欠落していることを理解できます。

とにかく意図はそうです ブロック また パス データに従ってXML ..そしてそれがあなたがしていることです。

ノート: スキーマトロン 最近良い練習に入ってきました!これがチュートリアルです: http://zvon.org/xxl/schematrontutorial/general/contents.html

他のヒント

私が提案するのは、以下に定義されている各ケースに対してXSDを作成することです。

のようなケース:

  1. 他の要素/属性の値または存在に応じて要素を検証します。
  2. 他の要素/属性の値または存在に応じて要素の値を検証します。
  3. 他の要素/属性の値または存在に応じて属性を検証します。
  4. 検証から(ランダム)要素/属性を無視することは許可されていません。 (私は言うことは、制限があることの使用法です。)
  5. 異なるデータ型を持つ同じ名前の要素/属性。
  6. 他の要素/属性の価値または存在に基づいて子要素を検証します。

そのために独自のXMLを作成します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top