質問

私の要件は、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の間に多くの重複がある場合にエラーが忍び寄る可能性を回避できます。

不利な点は、定義が異なるファイル間で分割されるため、人間が従うのが少し難しくなることです。

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