0

XML を初めて使用するので、助けが必要です。スキーマバリデータを作成する必要がある次の XML コードがあります。

<?xml version="1.0" encoding="UTF-8"?>
<users>
<user>
    <family pol="m">Peter</family>
    <age>40</age>
    <email>ppenzov@ii.com</email>
</user>
<user>
    <family pol="w">Penz</family>
    <age>65</age>
</user>
<user>
    <family pol="w">Penzov</family>
    <age>19</age>
    <email>pppenzov@ii.com</email>
</user>
</users>

xml スキームは、次の規則に従う必要があります。

家族、年齢、メールアドレスは厳密に順守する必要があります

ファミリー- 1 回発生し、最大 20 個のシンボルを持つ必要があります

age - 1 回発生し、1 から 100 までの数値でなければなりません

email - 高々 1 回発生する必要がありますが、省略できます。5 ~ 10 記号の文字列である必要があります

非常に基本的な例を作成するのを手伝ってくれませんか?

これまでのところ、私はこれを行ってきました:

<?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="user">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="family" type="xs:string">
        <xs:restriction base="xs:string">
          <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
          <xs:enumeration value="family" maxOccurs="1"/>
          <xs:length value="20"/>
        </xs:restriction>
      </xs:element name="family" type="xs:string">
      <xs:element name="age" type="xs:intreger">
        <xs:restriction base="xs:integer">
          <xs:minInclusive value="1"/>
            <xs:maxInclusive value="100"/>
            <xs:enumeration value="age" maxOccurs="1"/>
        </xs:restriction>
      </xs:element name="age" type="xs:intreger">
      <xs:element name="email" type="xs:string">
        <xs:restriction base="xs:string">
          <xs:minLength value="5"/>
          <xs:maxLength value="10"/>
          <xs:enumeration value="email" maxOccurs="1"/>
        </xs:restriction>
      </xs:element name="email" type="xs:string">
    </xs:sequence>
  </xs:complexType>
</xs:element>

</xs:schema>
4

2 に答える 2

2

多くのスキーマ ジェネレーターがオンラインにあります。これらを使用して新しい XML ドキュメントを開始し、要素の位置に焦点を当てた基本的なスキーマを作成します。これにより、多くの時間を節約できます。機能したら、個々のフィールド制限の追加を開始します。

最後のヒントを 1 つ。XML をフォーマットできるエディターを使用します。スキーマは、最高のときに読むのが難しいです:-(

スキーマ ジェネレーター

Freeformatter.comによって生成された例を次に示します。

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="users">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="user" maxOccurs="unbounded" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="family">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:string">
                      <xs:attribute type="xs:string" name="pol" use="optional"/>
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
              <xs:element type="xs:byte" name="age"/>
              <xs:element type="xs:string" name="email" minOccurs="0"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

そしてxmlgridによって生成された別のもの

 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
         <!-- XML Schema Generated from XML Document on Sat Jun 22 2013 09:54:23 GMT+0100 (IST) -->
         <!-- with XmlGrid.net Free Online Service http://xmlgrid.net -->
         <xs:element name="users">
               <xs:complexType>
                     <xs:sequence>
                           <xs:element name="user" maxOccurs="unbounded">
                                 <xs:complexType>
                                       <xs:sequence>
                                             <xs:element name="family" type="xs:string">
                                                   <xs:complexType>
                                                         <xs:attribute name="pol" type="xs:string"></xs:attribute>
                                                   </xs:complexType>
                                             </xs:element>
                                             <xs:element name="age" type="xs:int"></xs:element>
                                             <xs:element name="email" type="xs:string"></xs:element>
                                       </xs:sequence>
                                 </xs:complexType>
                           </xs:element>
                     </xs:sequence>
               </xs:complexType>
         </xs:element>
   </xs:schema>
于 2013-06-22T09:01:56.300 に答える