XMLスキーマで必要な属性のさまざまなセットを検証する
-
27-09-2019 - |
質問
私の要件は、2つの異なる検証戦略を使用してXMLを検証することです。戦略1では、XMLには、特定の必要な属性を持つ要素のインスタンスが必要です。戦略2では、XMLは、異なる属性を持つ同じ要素のインスタンスを持つ必要があります。したがって、アイデアは、各セットに必要な属性の異なるセットを持つ同じ要素の2つの異なるセットがあるということです。 1つのXSDのみを使用してこれを検証する方法はありますか。これまでの私の唯一の解決策は、2つの異なるXSDファイルを使用して検証することです。
例1:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<element firstName="something"/> <!--required -->
<element lastName="something"/> <!-- required -->
<element phoneNumber="something"/> <!-- not required -->
<root>
例2:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<element firstName="something"/> <!-- not required -->
<element lastName="something"/> <!-- required -->
<element phoneNumber="something"/> <!-- required -->
<root>
XSDによる検証を達成できますか?
解決
リック、
私たちのアプリで解決するために同様の問題がありましたが、私たちの最良の解決策はモジュール化されたスキーマを使用することでした。
したがって、異なる部分を除いて互いに重複するSchema1とSchema2を持つ代わりに、異なる制約のみを含むSchema1とSchema2があり、両方とも共有される制約を定義する共通のスキーマ3をインポートします。
それを行う方法の例です ここ.
単一のXSDは得られませんが、重複を減らすため、保守性に役立ち、Schema1とSchema2の間に多くの重複がある場合にエラーが忍び寄る可能性を回避できます。
不利な点は、定義が異なるファイル間で分割されるため、人間が従うのが少し難しくなることです。
所属していません StackOverflow