2

次の XML 構造のスキーマを定義したいと思います。

<object>System<S/>Design<S/>Part</object>

要素「オブジェクト」には、スペースを含む可能性のある列挙値 (システム、デザイン、パーツ) としてコンテンツのリストを入力する必要があります。そのため、スペースで区切られたリストを使用することはできません。区切りとして要素を使用します。

ただし、単純なコンテンツを親にすることができるすべての xsd 要素は、要素を親にすることはできず、その逆も同様です。それを回避する方法はありますか?

4

2 に答える 2

2

これを回避する最も簡単な方法は、わずかに異なる XML 構造を使用することです。次に例を示します。

<object>
  <item>System</item>
  <item>Design</item>
  <item>Part</item>
</object>

これにより、個々のアイテムの値に必要に応じてスペースを含めることができ、XSD の列挙リストを使用して正当な値を簡単に制限できます。また、データの構造をもう少し直接的に示しています。何かのリストを使用してオブジェクトを記述しています (itemそれらが実際に何であるかがわからないため、これを呼び出しました。より有益な名前を付けてください。あなたの XML!)。リスト内の何かまたは他のものはそれぞれ、問題の概念モデルにおける別個のオブジェクトです。それぞれが別個の XML オブジェクト (ここでは、別個のインスタンスの要素タイプitem)。

于 2012-08-16T20:43:16.917 に答える
2

XSD 1.1 に移行してアサーションを使用しない限り、答えはノーです。

XSD 1.0 では、混合コンテンツ要素のテキスト ノードに表示されるテキストを制限する方法がありません。これは、XML を設計どおりに使用していないためです (この種の構造では、XPath/XSLT でも問題が発生します)。

XSD 1.1 では、次のような「オブジェクト」の宣言に関するアサーションを持つことができました。

test="text() 内のすべての $s が $s = ('System', 'Design', 'Part') を満たす

于 2012-08-16T20:18:36.093 に答える