0

アプリのいくつかの条件に基づいてxmlドキュメントを作成しています。xml内の要素の数は常に可変です。たとえば、あるときは次のようになります。

<TransactionTypes>
  <X value="false" text="" />
  <O value="false" text="" />
  <E value="false" text="" />
  <P value="false" text="" />
  <C value="false" text="" />
  <K value="false" text="" />
</TransactionTypes>

そして他の時のように:

 <TransactionTypes>
  <TT value="false" text="" />
  <EP value="false" text="" />
  <PY value="false" text="" />
</TransactionTypes>

したがって、TransactionTypes内の子要素は、要素の名前が常に異なりますが、値とテキストの属性は常にあります。このためのXSDを作成するにはどうすればよいですか?

4

2 に答える 2

0

ワイルドカードにXSD制限を作成してから、ワイルドカード要素の属性を指定することはできないと思います。

可能なタグは「any」のみです: http ://www.w3schools.com/schema/schema_complex_any.asp

そして、「any」が持つ可能性のある属性を定義することはできません。別の解決策はないと思います。「あらゆる種類の要素が存在する可能性がある」と言ったように...「TransactionTypes」の子である可能性のあるすべての要素を定義できれば、間違いなくより良い結果が得られます。いくつあっても。これらすべての子要素を同じcomplexTypeにマップし、属性値/テキストを定義してから、1回だけ定義することができます。ただし、ワイルドカードは機能しません。

セバスチャン

于 2012-10-17T08:32:09.327 に答える
0

XSD 1.1では、TransactionTypes要素にアサーションを定義できます。

<xs:assertion test="every $c in * satisfies @value='false' and @text=''"/>

ただし、XSDは、XMLに任意の制約を表現できるように設計されているのではなく、XSD設計者が適切に設計されたXMLと見なす制約の種類を説明するように設計されていることを指摘しておく価値があります。このXMLはそのカテゴリに分類されていないようです。

于 2012-10-17T23:03:08.213 に答える