0

XML 用の xsd ドキュメントを定義しようとしています。

しかし、私はそれが初めてで、いくつか試してみると混乱します。

私のxml:

<?xml version="1.0" encoding="utf-8"?>
<mashhadhost xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com mhost.xsd">
    <create>
        <name>example.ir</name>
        <period>60</period>
        <ns>
            <hostAttr>
                <hostName>ns1.example.ir</hostName>
                <hostAddr ip="v4">192.0.2.2</hostAddr>
            </hostAttr>
        </ns>
        <contact type="holder">ex61-irnic</contact>
        <contact type="admin">ex61-irnic</contact>
        <contact type="tech">ex61-irnic</contact>
        <contact type="bill">ex61-irnic</contact>
    </create>
    <auth>
        <code>TOKEN</code>
    </auth>
</mashhadhost>

ご覧のとおり<create><auth>子供がいます。

1-<auth>が必要 -><code>も必要で、コードは長さ 32 の文字列です。

2-または<create>で置き換えることができます<update><delete>

3- <hostAttr>2 ~ 4 回繰り返すことができます。

4-<contact>正確な属性で4回繰り返す必要があります。

それは私の試みですが、それには多くの穴があります。

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">


    <xs:element name="mashhadhost">
        <xs:complexType>
            <xs:sequence>


                <xs:element name="create">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="name" type="xs:string"/>
                            <xs:element name="period" type="xs:string"/>

                            <xs:element name="ns"/>

                            <xs:element name="contact" type="xs:string"/>

                        </xs:sequence>
                    </xs:complexType>
                </xs:element>


                <xs:element name="auth">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="code" type="xs:string"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>


            </xs:sequence>
        </xs:complexType>
    </xs:element> 



</xs:schema> 
4

1 に答える 1

1

ご要望に応じて XSD を作成しました。このオンラインバリデーターを使用して、スキーマに対して xml を検証しました。乾杯!!!

    <?xml version="1.0" encoding="utf-8"?>
<xs:schema id="mashhadhost" targetNamespace="http://www.w3schools.com" xmlns:mstns="http://www.w3schools.com" xmlns="http://www.w3schools.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
 <xs:complexType name="bodyType" mixed="true">
            <xs:sequence>
              <xs:element name="name" type="xs:string" minOccurs="0" />
              <xs:element name="period" type="xs:string" minOccurs="0" />
              <xs:element name="ns" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="hostAttr" minOccurs="2" maxOccurs="4">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="hostName" type="xs:string" minOccurs="1" />
                          <xs:element name="hostAddr" nillable="true" minOccurs="1">
                            <xs:complexType>
                              <xs:simpleContent msdata:ColumnName="hostAddr_Text" msdata:Ordinal="1">
                                <xs:extension base="xs:string">
                                  <xs:attribute name="ip" form="unqualified" type="xs:string" />
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="contact" minOccurs="4" maxOccurs="4">
                <xs:complexType>
                  <xs:simpleContent msdata:ColumnName="contact_Text" msdata:Ordinal="1">
                    <xs:extension base="xs:string">
                      <xs:attribute name="type" form="unqualified" type="xs:string" />
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
  <xs:element name="mashhadhost">
    <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="create" type="bodyType"/>
        <xs:element name="udpate" type="bodyType"/>
        <xs:element name="delete" type="bodyType"/>
        <xs:element name="auth">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="code" minOccurs="0" >
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                    <xs:length value="32"/>
                </xs:restriction>
                </xs:simpleType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
    </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>
于 2013-06-26T12:40:00.507 に答える