1

以下のスキーマに対して検証したい以下の例のXMLがあります。extraImagesに関するエラーが発生します。エラーは次のとおりです。

エラー3033:要素'{http://www.w3.org/2001/XMLSchema}sequence':コンテンツが無効です。期待されるのは(注釈?、(要素|グループ|選択|シーケンス|任意)*)です。

誰かが私が間違っていることを見ることができますか?別のスキーマにextraImages複合型がある場合は機能しますが、製品スキーマに追加すると機能しません。

<products>
<product>
<productImageURL>imgp9241.jpg</productImageURL>
<productDescription>blah blah blah</productDescription>
<productName>Test Extra</productName>
<extraImages>
<extraImages>
<fileName>textextra.jpg</fileName>
<sequence>10</sequence>
</extraImages>
<extraImages>
<fileName>textextra.jpg</fileName>
<sequence>10</sequence>
</extraImages>
</extraImages>
</product>
</products>

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="products">
   <xsd:complexType>
      <xsd:sequence>
         <xsd:element name="product" minOccurs = "1" maxOccurs="1" type="productType"/>
      </xsd:sequence>
   </xsd:complexType>
</xsd:element>

    <xsd:complexType name="productType">
       <xsd:sequence>

           <xsd:element name="productImageURL">
              <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:minLength value="0" />
                    <xsd:maxLength value="450" />
                    <xsd:whiteSpace value="collapse" /> 
                </xsd:restriction>
              </xsd:simpleType>
            </xsd:element>

           <xsd:element name="productDescription">
              <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:minLength value="1"/>
                    <xsd:whiteSpace value="collapse"/> 
                </xsd:restriction>
              </xsd:simpleType>
            </xsd:element>

           <xsd:element name="productName">
              <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:minLength value="1"/>
                    <xsd:maxLength value="150"/>
                    <xsd:whiteSpace value="collapse"/> 
                </xsd:restriction>
              </xsd:simpleType>
            </xsd:element>


            <xsd:element name="extraImages">
               <xsd:complexType>
                  <xsd:sequence>
                     <xsd:element name="extraImage" minOccurs = "1" maxOccurs="100" type="imgType"/>
                  </xsd:sequence>
               </xsd:complexType>
            </xsd:element>

                <xsd:complexType name="imgType">
                   <xsd:sequence>

                         <xsd:element name="fileName">
                          <xsd:simpleType>
                            <xsd:restriction base="xsd:string">
                                <xsd:maxLength value="25"/>
                                <xsd:whiteSpace value="collapse"/> 
                            </xsd:restriction>
                          </xsd:simpleType>
                        </xsd:element>

                        <xsd:element name="sequence" type="xsd:integer" default="0"/>

                   </xsd:sequence>
                </xsd:complexType>          


       </xsd:sequence>
    </xsd:complexType>  

</xsd:schema>
4

2 に答える 2

4

エラーメッセージは、XSDが無効であることを示しています。名前付きタイプをスキーマまたは再定義以外の内部にネストすることはできません。

修正されたXSD:

<?xml version="1.0"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="products">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="product" minOccurs = "1" maxOccurs="1" type="productType"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:complexType name="productType">
        <xsd:sequence>
            <xsd:element name="productImageURL">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:minLength value="0"/>
                        <xsd:maxLength value="450"/>
                        <xsd:whiteSpace value="collapse"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="productDescription">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:minLength value="1"/>
                        <xsd:whiteSpace value="collapse"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="productName">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:minLength value="1"/>
                        <xsd:maxLength value="150"/>
                        <xsd:whiteSpace value="collapse"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="extraImages">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="extraImage" minOccurs = "1" maxOccurs="100" type="imgType"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="imgType">
        <xsd:sequence>
            <xsd:element name="fileName">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:maxLength value="25"/>
                        <xsd:whiteSpace value="collapse"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="sequence" type="xsd:integer" default="0"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

このレイアウトを示しています。

ここに画像の説明を入力してください

XSDを修正した後、表示したXMLの検証を試みることができます。XSDと比較しながらその構造を見ると...

ここに画像の説明を入力してください

extraImages内にネストされたextraImages には、がないはずであることがわかります。s

Error occurred while loading [], line 7 position 5
The element 'extraImages' has invalid child element 'extraImages'. List of possible elements expected: 'extraImage'.
于 2012-11-02T13:48:37.937 に答える
0

XSDでは、 extraImagesextraImage の2つの異なる要素を使用
していますが、XMLでは、extraImagesとextraImageをそれぞれ1回使用するのではなく、extraImagesを2回使用しています。

于 2012-11-02T13:03:46.120 に答える