19

var1の変数の順序付けられていないリストが2回発生し、var2が無限に発生するようにしようとしています(私のプロジェクトのユースケースは異なります)。この要素では、maxOccursを使用できません。

私がやろうとしていることに対する回避策はありますか?

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="testcomment">
    <xs:complexType>
      <xs:all>
        <xs:element name="var1" type="xs:string" maxOccurs="2" />
        <xs:element name="var2" type="xs:integer" maxOccurs="unbounded" />
      </xs:all>
    </xs:complexType>
  </xs:element>
</xs:schema>
4

3 に答える 3

17

私は同じ問題に遭遇しました、そして解決策があります!この答えをチェックしてください:

https://stackoverflow.com/a/3827606/637142

<xs:element name="A">
  <xs:complexType>
    <xs:choice maxOccurs="unbounded">
      <xs:element ref="B"/>
      <xs:element ref="C"/>
    </xs:choice>
  </xs:complexType>
</xs:element>
于 2013-05-10T15:14:14.457 に答える
7

簡単で、<xs:choice maxOccurs="unbounded">の代わりに使用するだけです<xs:all>。これはあなたが探している効果を与えるでしょう。

于 2014-03-01T02:05:39.537 に答える
2

あなたがやろうとしていることは、リスト内の要素のタイプが先読みなしでは曖昧であるように聞こえます。その場合、XSDは記述できる言語のクラスのため、回避策はありません。

XSDの関連部分を投稿できますか?


更新:いいえ、XSDではそれを行うことはできません。要素に何を入れることができるかについての規則は<xs:all>、例えばここにリストされています。このコンストレイントには、UPAまたはUniqueParticleAttributionコンストレイントという名前があります。それはすべてあいまいさに関するものであり、MicrosoftのWebサイトには、なぜここに存在するのかについての適切な説明があります。

ドキュメントのレイアウトを変更してこの種の宣言の必要性をなくすか、RelaxNGのようなより表現力豊かなスキーマ言語を探すことができます。

于 2010-03-02T10:18:45.820 に答える