简体   繁体   中英

XML Schema won't validate

Ln 19 Col 54 - s4s-elt-must-match.1: The content of 'photo' must match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)). A problem was found starting at: attribute.

I cannot figure this out. Been at it for 2 days now. :(

<catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="catalog.xsd">

   <photo cid="c1748" donatedBy="John Borelli">
      <name metadata="tunis cooper property museum">Tunis R. Cooper property</name>
      <description>
      <![CDATA[ 
         This photo was taken by John Borelli's great-grandfather. It is believed to have been taken around 1830.
         David Demarest originally purchased the site of the chair factory in 1663. This site was under the ownership 
         of the Demarest family until 1758.  The property is listed in the National and New Jersey Registers of Historic Places.
      ]]>
      </description>
      <date>circa 1830</date>
      <images>
         <img src="1748a.jpg" />
         <img src="1748b.jpg" />
      </images>
   </photo>

   <photo cid="c1749" donatedBy="John Borelli">
      <name metadata="tunis cooper property museum">Tunis R. Cooper property</name>
      <description>
      <![CDATA[ 
         A more recent picture of the property taken by the Borelli family.  The property is listed in the 
         National and New Jersey Registers of Historic Places.
      ]]>
      </description>
      <date>circa 1950</date>
      <images>
         <img src="1749a.jpg" />
      </images>
   </photo>

   <photo cid="c1411" donatedBy="Saint Johns Catholic Church">
      <name metadata="saint johns catholic church">Saint Johns Church</name>
      <description>
      <![CDATA[ 
         A more recent picture of the property taken by the Borelli family.  The property is listed in the 
         National and New Jersey Registers of Historic Places.
      ]]>
      </description>      
      <date>1921</date>
   </photo>


   <photo cid="c2003" donatedBy="Linda Choo">
      <name metadata="bergenfield elementary school">Bergenfield School</name>
      <description>
      <![CDATA[ 
         The No. 5 Public School, a.k.a. Bergenfield School
      ]]>
      </description>
      <date>circa 1920</date>
      <images>
         <img src="2003a.jpg" />
         <img src="2003b.jpg" />
      </images>
   </photo>

   <photo cid="c2078" donatedBy="Maria Giodelli">
      <name metadata="coopers pond water">Coopers Pond</name>
      <description>
      <![CDATA[ 
         A favorite spot where we used to go hang out as kids.  The picture shows my brothers Robert and Michael.
      ]]>
      </description>
      <date>May 4, 1941</date>
      <images>
         <img src="2078a.jpg" />
      </images>
   </photo>

   <photo cid="c2079" donatedBy="Linda Uffington">
      <name metadata="watch timekeeping pocket railway">Pocket Watch</name>
      <description>
      <![CDATA[ 
         A more recent picture of the property taken by the Borelli family.  The property is listed in the 
         National and New Jersey Registers of Historic Places.
      ]]>
      </description>
      <date>circa 1870</date>
      <images>
         <img src="2079a.jpg" />
         <img src="2079b.jpg" />
      </images>
   </photo>

   <photo cid="c3233">
      <name metadata="hotel">Bergenfield Hotel</name>
      <description>
      <![CDATA[ 
         The Knollfield Hotel was known as the Bergenfield Hotel.  The property is listed in the 
         National and New Jersey Registers of Historic Places.
      ]]>
      </description>
      <date>circa 1920</date>
   </photo>

   <photo cid="c3433">
      <name metadata="sweeney coal fuel">Sweeney Coal</name>
      <description>
      <![CDATA[ 
         Sweeney Fuel Company located near New Bridge Road and railroad tracks.
      ]]>
      </description>
      <date>1920</date>
      <images>
         <img src="3433a.jpg" />
         <img src="3433b.jpg" />
         <img src="3433c.jpg" />
      </images>
   </photo>

</catalog>

xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="catalog">
     <xs:complexType>
        <xs:sequence>
           <xs:element name="photo" minOccurs="1" maxOccurs="unbounded">
           <xs:attribute name="cid" type="cidType" />
           <xs:attribute name="donatedBy" type="xs:string" use="optional" />            
              <xs:complexType>
                 <xs:sequence>
                    <xs:element name="name">
                       <xs:complexType>
                          <xs:simpleContent>
                             <xs:extension base="xs:string">
                                <xs:attribute name="metadata" type="xs:string" />
                             </xs:extension>
                          </xs:simpleContent>
                       </xs:complexType>
                    </xs:element>
                    <xs:element name="description" type="xs:string" />
                    <xs:element name="date" type="xs:string" />
                    <xs:element name="images" minOccurs="0">
                       <xs:complexType>
                          <xs:sequence>
                             <xs:element name="img">
                                <xs:complexType>
                                  <xs:simpleContent>
                                    <xs:extension base="xs:string">
                                      <xs:attribute name="src" type="srcType" />
                                    </xs:extension>
                                  </xs:simpleContent>
                                </xs:complexType>
                             </xs:element>
                          </xs:sequence>
                       </xs:complexType>
                    </xs:element>
                 </xs:sequence>
              </xs:complexType>
           </xs:element>
        </xs:sequence>  <!-- closes catalog sequence -->
     </xs:complexType> <!-- closes catalog complex type -->
  </xs:element> <!-- closes catalog element -->
  <xs:simpleType name="cidType">
    <xs:restriction base="xs:ID">
      <xs:pattern value="c\d{4}" />
    </xs:restriction>
  </xs:simpleType>
 <xs:simpleType name="srcType">
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9]+.jpg"/>
  </xs:restriction>
</xs:simpleType>

</xs:schema>

In your schema, the <xs:attribute.../> declarations go inside the <xs:complexType>...</xs:complexType> declaration and must come at the end, after the <xs:sequence> .

Once that error is fixed you have another problem in the XSD at the definition

<xs:element name="img">
    <xs:complexType>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="src" type="srcType" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:element>

where you are missing maxOccurs="unbounded" (or some value greater than 1 , the default) on the specification of the img element (assuming the XML is actually valid with multiple img elements inside images , which since it is plural I guess is the case).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM