0

そのため、繰り返しが多い .xsd ファイルがあります。

<xs:complexType name="Square">
  <xs:sequence>
    <xs:element name="Side1" type="xs:integer" minOccurs="1"/>
    <xs:element name="Side2" type="xs:integer" minOccurs="1"/>
    <xs:element name="Side3" type="xs:integer" minOccurs="1"/>
  <xs:element name="Side4" type="xs:integer" minOccurs="1"/>
  </xs:sequence>
  <xs:attribute name="squarename" type="xs:string" use="optional" />
  <xs:attribute name="squarenumber" type="xs:integer" use="optional" />
</xs:complexType>

<xs:complexType name="Rectangle">
  <xs:sequence>
    <xs:element name="Side1" type="xs:integer" minOccurs="1"/>
    <xs:element name="Side2" type="xs:integer" minOccurs="1"/>
    <xs:element name="Side3" type="xs:integer" minOccurs="1"/>
    <xs:element name="Side4" type="xs:integer" minOccurs="1"/>
  </xs:sequence>
  <xs:attribute name="rectanglecolor" type="xs:string" use="optional" />
  <xs:attribute name="rectanglelabel" type="xs:string" use="optional" />
</xs:complexType>

<xs:complexType name="Rhombus">
  <xs:sequence>
    <xs:element name="Side1" type="xs:integer" minOccurs="1"/>
    <xs:element name="Side2" type="xs:integer" minOccurs="1"/>
    <xs:element name="Side3" type="xs:integer" minOccurs="1"/>
    <xs:element name="Side4" type="xs:integer" minOccurs="1"/>
  </xs:sequence>
  <xs:attribute name="rhombosdance" type="xs:string" use="optional" />
  <xs:attribute name="rhombusname" type="xs:string" use="optional" />
</xs:complexType>

ご了承ください

  <xs:sequence>
    <xs:element name="Side1" type="xs:integer" minOccurs="1"/>
    <xs:element name="Side2" type="xs:integer" minOccurs="1"/>
    <xs:element name="Side3" type="xs:integer" minOccurs="1"/>
    <xs:element name="Side4" type="xs:integer" minOccurs="1"/>
  </xs:sequence>

多くの場所に現れます。

これはちょっと悪いようです。そのシーケンスのプレースホルダーまたは何かを持つ方法はありますか。これらすべてを備えた新しいタイプを作成しますが、下位互換性を維持する必要があるため、xsd が可能だったのと同じ xml を取得する必要があるため、たとえば、

<Square>
  <Side1>1</Side1>
  <Side2>1</Side2>
  <Side3>1</Side3>
  <Side3>1</Side3>
</Square>

の中へ

<Square>
  <QuadSides>
    <Side1>1</Side1>
    <Side2>1</Side2>
    <Side3>1</Side3>
    <Side4>1</Side4>
  <QuadSides>
</Square>

最初の xml を受け入れる必要があります。これを行う方法はありますか?

4

2 に答える 2

1

もう 1 つの方法は、要素グループ (要素を使用して宣言された XSD コンポーネント<xs:group>) を使用することです。

XML スキーマの一部を書き換える方法を次に示します。

<xs:group name="Sides">
  <xs:sequence>
    <xs:element name="Side1" type="xs:integer" minOccurs="1"/>
    <xs:element name="Side2" type="xs:integer" minOccurs="1"/>
    <xs:element name="Side3" type="xs:integer" minOccurs="1"/>
    <xs:element name="Side4" type="xs:integer" minOccurs="1"/>
  </xs:sequence>
</xs:group>

<xs:complexType name="Square">
  <xs:group ref="Sides"/>
  <xs:attribute name="squarename" type="xs:string" use="optional" />
  <xs:attribute name="squarenumber" type="xs:integer" use="optional" />
</xs:complexType>

<xs:complexType name="Rectangle">
  <xs:group ref="Sides"/>
  <xs:attribute name="rectanglecolor" type="xs:string" use="optional" />
  <xs:attribute name="rectanglelabel" type="xs:string" use="optional" />
</xs:complexType>

<xs:complexType name="Rhombus">
  <xs:group ref="Sides"/>
  <xs:attribute name="rhombosdance" type="xs:string" use="optional" />
  <xs:attribute name="rhombusname" type="xs:string" use="optional" />
</xs:complexType>
于 2013-09-19T00:59:10.790 に答える