0

次のようなxmlファイルがあります。

<customer>
  <field1 />
  <field2 />
  <field3>
    <item1 />
  </field3>
  <field3>
    <item1 />
  </field3>
</customer>

field* は任意の順序で表示でき、field3 のみ複数回表示できます。

これを検証するために XSD ファイルを作成するにはどうすればよいですか?

ありがとうございました!

4

2 に答える 2

3

これを試して

私は教祖ではありませんが、これはうまくいくようです。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="customer" type="customerType"/>
  <xs:complexType name="customerType">
    <xs:sequence>
      <xs:element name="field1" minOccurs="1" maxOccurs="1">
      </xs:element>
      <xs:element name="field2" minOccurs="1" maxOccurs="1">
      </xs:element>
      <xs:element name="field3" type="field3Type"
                  minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="field3Type">
    <xs:sequence>
      <xs:element name="item1">
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

ツール

XMLコピーエディターを使用しましたが、XMLを検証するエディターがたくさんあります。

リンク

XMLファイルからXSDを生成する方法について のこの記事にも興味があるかもしれません。

于 2008-11-26T11:21:53.967 に答える
0

うーん、これは xsd が本当に便利ではない種類の作業です。とにかく、私が間違いを犯していなければ、これでうまくいくはずです:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/NewXMLSchema"
xmlns:tns="http://www.example.org/NewXMLSchema" elementFormDefault="qualified">

  <element name="customer" type="tns:customerType"/>
  <complexType name="customerType">
    <sequence>
      <element>
        <complexType>
          <all>
            <element>
              <complexType>
                <sequence>
                  <element ref="tns:field3" maxOccurs="unbounded"/>
                  <element ref="tns:field1" maxOccurs="1"/>
                </sequence>
              </complexType>
            </element>
            <element>
              <complexType>
                <sequence>
                  <element ref="tns:field3" maxOccurs="unbounded"/>
                  <element ref="tns:field2" maxOccurs="1"/>
                </sequence>
              </complexType>
            </element>
            <element>
              <complexType>
                <sequence>
                  <element ref="tns:field3" maxOccurs="unbounded"/>
                  <element ref="tns:field4" maxOccurs="1"/>
                </sequence>
              </complexType>
            </element>
          </all>
        </complexType>
      </element>
      <element ref="tns:field3" maxOccurs="unbounded" />
    </sequence>
  </complexType>
  <complexType name="field1Container"/>
  <complexType name="field2Container"/>
  <complexType name="field3Type">
    <sequence>
      <element name="item1"/>
    </sequence>
  </complexType>
  <complexType name="field4Container"/>
  <element name="field3" type="tns:field3Type"/>
  <element name="field1"/>
  <element name="field2"/>
  <element name="field4"/>
</schema>
于 2008-11-27T14:33:18.090 に答える