0

私の要件は、2 つの異なる検証戦略で xml を検証することです。戦略 1 では、特定の必須属性を持つ要素のインスタンスを xml に含める必要があります。戦略 2 では、異なる必須属性を持つ同じ要素のインスタンスが xml に必要です。つまり、同じ要素の 2 つの異なるセットがあり、各セットに必要な属性のセットが異なるという考え方です。xsd を 1 つだけ使用してこれを検証する方法はありますか。これまでの私の唯一の解決策は、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 による検証はできますか?

4

1 に答える 1

0

リック、

私たちのアプリで解決すべき同様の問題がありました。私たちの最善の解決策は、モジュール化されたスキーマを使用することでした。

したがって、異なる部分を除いて互いに重複しているSchema1とSchema2を使用する代わりに、異なる制約のみを含むSchema1とSchema2を使用し、両方とも共有される制約を定義する共通のSchema3をインポートします。

その方法の例はここにあります。

XSDは1つではありませんが、重複が少なくなるため、保守性が向上し、Schema1とSchema2の間に多くの重複がある場合にエラーが忍び寄る可能性を回避できます。

欠点は、定義が異なるファイル間で分割されるため、スキーマが人間が理解するのが少し難しくなることです。

于 2010-10-30T03:20:24.343 に答える