2010-12-17 3 views
0

私は以下のようなxmlを持っています。xml - 与えられた要素の属性の組み合わせを検証する

<Map> 
<MapItem name="firstName" value="john" /> 
<MapItem name="middleName" value="q" /> 
<MapItem name="lastName" value="public" /> 
<MapItem name="phone" value="123-456-7890" /> 
<MapItem name="ssn" value="123-45-6789" /> 
<MapItem name="email" value="[email protected]" /> 
</Map> 

私は各MapItemの属性の値を検証することができ、単一のXSDを思い付くしたいと思います。

例:

  • SSN =いくつかの他の正規表現パターン
  • など

    • middleName =単一の文字
    • 電話=いくつかの正規表現パターン

    が、このことは可能です(1つのxsdのみ)?

    注:xsltを使用して、このXMLをより要素ベースの構造に変換しています。これは簡単に検証できます。しかし、私はxslt変換なしでこれを行う必要があります。

  • 答えて

    0

    残念ながら、XSDスキーマは条件付き検証をサポートしていません。 XSDスキーマを使用して探している検証を実行することはできません。

    あなたはすでにXSLT変換である1つのソリューションを使用しています。ワンステップでXSLTを使用して検証を実行することもできます。ここで、XSLT変換の出力は検証エラーのリストになります。

    また、link for you on the oXygenサイトでは、SchemtronやRelax NGスキーマを使用した方法について話しています。

    +0

    リンクありがとうございます。私はすでにそれらのオプションを検討していたが、それらを排除した。残念なことに、「彼ら」はSchematronやRelaxNGに対応するコードを書き直したくないので、xsdだけで済ませなければなりません。このレートでは、「彼ら」は選択肢がないかもしれません。 – jkl

    +0

    このXMLのフォーマットを管理している場合は、おそらく属性の代わりに要素を使用するようにXMLの形式を変更するように "それら"を納得させることができます。 – pmartin

    関連する問題