質問

XMLスキーマで特別なケースを定義するには、あなたの助けが必要です: 「x」と「y」の2つの要素を含むシーケンス:一方:

  • <x>要素は、シーケンス内の0から非バインド時間まで表示できます

  • <y>要素は、シーケンス内で0〜1回出現できます

  • <=>および<=>の場所はどこでも構いません。つまり、<=>要素の非バインド時間、単一の<=>要素、および<=>の非バインド時間を設定できます。要素。

この問題のXMLの例:

例#1

<x>stuff</x>
<y>stuff</y>
<x>stuff</x>

例#2

<y>stuff</y>
<x>stuff</x>
<x>stuff</x>

例#3

<x>stuff</x> 
<x>stuff</x>
<y>stuff</y>
<x>stuff</x>

ありがとう!

役に立ちましたか?

解決

さまざまな理由により、Yuval、Mo、またはdavidsheldonのサンプルはいずれも動作しません。これは

    <xs:complexType name="myComplexType">
    <xs:sequence>
        <xs:element name="x" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
        <xs:sequence minOccurs="0">
            <xs:element name="y" type="xs:string"/>
            <xs:element name="x" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:sequence>
    </xs:complexType>

他のヒント

編集:Alohciが述べたように、私の解決策は間違っています。仕様によると、xs:allの要素は0回または1回しか表示できません。ご不便をおかけして申し訳ありません

あなたが望むのはシーケンスではないと思います。シーケンスは、要素だけでなく順序も定義します。そして、あなたの場合、順序は変わるかもしれません。 xs:allを試しましたか?

<xs:complexType name="myComplexType">
  <xs:all>
    <xs:element name="x" type="xs:string" maxOccurs="unbounded"/>
    <xs:element name="y" type="xs:string" maxOccurs="1"/>
  </xs:all>
</xs:complexType>

もう1つの方法は、シーケンスにすることですが、シーケンスをmaxOccurs="unbounded"

としてマークすることです。

スキーマを使用してからしばらく経ちましたが、ここでシーケンスが答えだと思います。

(an x)または(yの後にxが続く)の間で無数の選択肢が必要です。

<xsd:element name="parent">
  <xsd:complexType>
    <xsd:choice maxOccurs="unbounded">
      <xsd:element name="x" type="xs:string"/>
      <xsd:sequence>
        <xsd:element name="y" type="xsd:string" />
        <xsd:element name="x" type="xsd:string" />
      </xsd:sequence>
    </xsd:choice>
  </xsd:complexType>  
</xsd:element>  

それほど複雑ではありません。私の頭の上では、このようなものになるはずです:

<xs:element name="x" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="y" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="x" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> 

XSDの各要素はデフォルトでオプションであるため、このXSDは定義したXML構造と一致し、y要素はx要素の前、後、または間に出現し、最大1回出現します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top