2

以下の AorBorC や ABCOrMore のような複雑な型を定義したいと思います。これらは、事前定義されたグループ (以下の group1) から 1 つの要素のみを持つ必要があります。ここで、AOrBorC は group1 の要素を 1 回だけ持つことができ、ABCOrMore は group1 から選択した要素を複数回出現させることができます。選択肢を個別に Choice 要素に入力することもできますが、これは複数の場所で行う必要があり、代わりにグループを使用できるかどうかを知りたかったのです。

以下を試しました。ただし、グループまたはその要素の代わりに、グループ全体の 1 つまたは複数の出現を許可しています。

どんな助けでも大歓迎です!

<xs:group name="group1" >
    <xs:sequence>   
        <xs:element name="a" type="xs:string" minOccurs="0" maxOccurs="1" />
        <xs:element name="b" type="xs:string" minOccurs="0" maxOccurs="1" />
        <xs:element name="c" type="xs:string" minOccurs="0" maxOccurs="1" />
    </xs:sequence>   
</xs:group>

<xs:complexType name="AorBorC">
    <xs:choice minOccurs="1" maxOccurs="1">
        <xs:group ref="group1" />
    </xs:choice>
</xs:complexType>       


<xs:complexType name="ABCOrMore"> 
    <xs:choice minOccurs="1" maxOccurs="unbounded"> 
        <xs:group ref="group1" /> 
    </xs:choice> 
</xs:complexType>

XML to be supported:
<ns0:Root xmlns:ns0="http://Scratch.ABC">
  <AorBorC>
    <c>c_1</c>
  </AorBorC>
  <ABCOrMore>
    <a>a_1</a>
    <a>a_2</a>
    <a>a_3</a>
  </ABCOrMore>

4

1 に答える 1

0

あなたは間違った場所であなたの選択をしています

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://Scratch.ABC" targetNamespace="http://Scratch.ABC" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Root">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="1" maxOccurs="1" name="AorBorC" type="group1" />
        <xs:element minOccurs="1" maxOccurs="unbounded" name="ABCOrMore" type="group1" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="group1">
    <xs:choice>
      <xs:element minOccurs="0" maxOccurs="1" name="a" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="b" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="c" type="xs:string" />
    </xs:choice>
  </xs:complexType>
</xs:schema>

XML

<ns0:Root xmlns:ns0="http://Scratch.ABC">
  <AorBorC>
    <a>a_1</a>
  </AorBorC>
  <ABCOrMore>
    <a>a_2</a>
  </ABCOrMore>
  <ABCOrMore>
    <b>b_1</b>
  </ABCOrMore>
</ns0:Root>

または、必要に応じて

<ns0:Root xmlns:ns0="http://Scratch.ABC">
  <AorBorC>
    <a>a_2</a>
  </AorBorC>
  <ABCOrMore>
    <a>a_2</a>
    <c>c_1</c>
    <b>b_1</b>
  </ABCOrMore>
</ns0:Root>

それで

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://Scratch.ABC" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://Scratch.ABC" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Root">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="1" maxOccurs="1" name="AorBorC" type="AorBorCType" />
        <xs:element minOccurs="1" maxOccurs="1" name="ABCOrMore" type="AorBorCMoreType" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="AorBorCType">
    <xs:choice minOccurs="1" maxOccurs="1">
      <xs:element minOccurs="0" maxOccurs="1" name="a" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="b" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="c" type="xs:string" />
    </xs:choice>
  </xs:complexType>
  <xs:complexType name="AorBorCMoreType">
    <xs:choice minOccurs="1" maxOccurs="unbounded">
      <xs:element minOccurs="0" maxOccurs="1" name="a" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="b" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="c" type="xs:string" />
    </xs:choice>
  </xs:complexType>
</xs:schema>

編集

質問が明確になったので、このスキーマは法案に適合するはずです

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://Scratch.ABC" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://Scratch.ABC" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="AorBorC" type="AorBorCType" />
        <xs:element name="AorBorCMore" type="AorBorCMoreType" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="AorBorCType">
    <xs:choice>
      <xs:element minOccurs="0" maxOccurs="1" name="a" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="b" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="c" type="xs:string" />
    </xs:choice>
  </xs:complexType>
  <xs:complexType name="AorBorCMoreType">
    <xs:choice>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="a" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="b" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="c" type="xs:string" />
    </xs:choice>
  </xs:complexType>
</xs:schema>
于 2013-10-11T03:46:42.703 に答える