Search code examples
htmlxmlxsdxsd-validationxml-validation

Error at line 2 : no declaration found for element 'xs:schema'


I'm having a real hard time trying to validate my XSD file against my XML file.

My XML validates just fine but when trying to do the same for my XSD file it keeps returning this error:

Error at line 2 : no declaration found for element xs:schema

I'm using XML copy editor but when I use an online validator such as https://www.freeformatter.com/xml-validator-xsd.html there is no issue. I do still want to know why i'm getting this error because I don't see a way to declare "schema" which is root ? or am I mistaken. Both are locally stored on my PC.

Below is the XML

<?xml version="1.0" encoding="UTF-8"?>
<students 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="schema.xsd">


            <alumno id="001">
                    <nombre>Samuel</nombre>
                    <apellido>Van Bladel</apellido>
                    <email>[email protected]</email>
                    <foto>https://google.com</foto> 
                    <expediente>NX0001R</expediente>
                    <curso>1</curso> 


                        <modulo>
                            <modulonom>daw1</modulonom>
                            <nota>10</nota>
                            <comentario>Muy bien hecho hasta el techo</comentario>
                        </modulo>

                       <modulo> 
                           <modulonom>daw2</modulonom>
                           <nota>10</nota>
                           <comentario>Muy bien hecho hasta el techo</comentario>
                       </modulo>
               </alumno>

              <alumno id="002">
                  <nombre>Chris</nombre>
                  <apellido>den oudste</apellido>
                  <email>[email protected]</email>
                  <foto>https://google.com</foto> 
                  <expediente>NX0002R</expediente>
                  <curso>1</curso> 


                   <modulo>
                       <modulonom>daw1</modulonom>
                       <nota>6</nota>
                       <comentario>muy bien</comentario>
                   </modulo>

                     <modulo> 
                         <modulonom>daw2</modulonom>
                         <nota>10</nota>
                         <comentario>Grande</comentario>
                     </modulo>
               </alumno>

               <alumno id="003">
                  <nombre>Denisa</nombre>
                  <apellido>Hermann</apellido>
                  <email>[email protected]</email>
                  <foto>https://google.com</foto> 
                  <expediente>NX0003R</expediente>
                  <curso>1</curso> 


                   <modulo>
                       <modulonom>daw3</modulonom>
                       <nota>9</nota>
                       <comentario>molt be</comentario>
                   </modulo>

                     <modulo> 
                         <modulonom>daw2</modulonom>
                         <nota>5</nota>
                         <comentario>lo puedes mejorar</comentario>
                     </modulo>
               </alumno>


               <alumno id="004">
                  <nombre>Deniz</nombre>
                  <apellido>Turkmenista</apellido>
                  <email>[email protected]</email>
                  <foto>https://google.com</foto> 
                  <expediente>NX0004R</expediente>
                  <curso>3</curso> 


                   <modulo>
                       <modulonom>daw6</modulonom>
                       <nota>9</nota>
                       <comentario>Crack</comentario>
                   </modulo>

                     <modulo> 
                         <modulonom>daw2</modulonom>
                         <nota>7</nota>
                         <comentario>Falta un</comentario>
                     </modulo>
               </alumno>



</students>

XSD below

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">



                    <xs:attribute name="id" type="xs:string"/>

                    <xs:element name="nombre">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="10"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>

                    <xs:element name="apellido">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="30"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>

                     <xs:element name="email"> 
                        <xs:simpleType > 
                          <xs:restriction base="xs:string"> 
                            <xs:pattern value="[^@]+@[^\.]+\..+"/> 
                          </xs:restriction> 
                        </xs:simpleType> 
                    </xs:element>

                      <xs:element name="foto">
                    <xs:simpleType>
                        <xs:restriction base="xs:anyURI">
                            <xs:pattern value="https://.+" />
                        </xs:restriction>
                        </xs:simpleType>
                    </xs:element>

                   <xs:element name="expediente">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:pattern value="[A-Z][A-Z][0-9][0-9][0-9][0-9][A-Z]"/>
                        </xs:restriction>
                    </xs:simpleType>
                   </xs:element>

                     <xs:element name="curso">
                      <xs:simpleType>
                        <xs:restriction base="xs:integer">
                          <xs:pattern value="([0-9])*"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>

                    <xs:element name="modulonom">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="30"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>

                    <xs:element name="nota"  >
                      <xs:simpleType>
                         <xs:restriction base="xs:string">
                          <xs:maxLength value="3"/>
                         </xs:restriction>
                      </xs:simpleType>
                    </xs:element>

                   <xs:element name="comentario">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="50"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>



                    <xs:element name="students" >
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element ref="alumno" maxOccurs="unbounded"/>                           
                          </xs:sequence>    
                      </xs:complexType>
                  </xs:element>



                   <xs:element name="alumno">
                        <xs:complexType>
                             <xs:sequence>
                                <xs:element ref="nombre"/>
                                 <xs:element ref="apellido"/>
                                  <xs:element ref="email"/>
                                  <xs:element ref="foto"/>
                                   <xs:element ref="expediente"/>
                                   <xs:element ref="curso"/>     
                                    <xs:element ref="modulo" maxOccurs="unbounded"/>
                            </xs:sequence>
                            <xs:attribute ref="id" use="required"/>
                      </xs:complexType>
                  </xs:element>

                    <xs:element name="modulo">
                        <xs:complexType>
                             <xs:sequence>
                                  <xs:element ref= "modulonom"  />     
                                    <xs:element ref= "nota"  />
                                      <xs:element ref= "comentario"  />
                            </xs:sequence>
                      </xs:complexType>
                  </xs:element>

</xs:schema>

I did open and close everything from what I can see so I don't understand why it's throwing this error.


Solution

  • The error,

    Error at line 2 : no declaration found for element 'xs:schema'

    suggests that you are mistakenly attempting to validate the XSD itself rather than validate the XML instance document.

    If you truly wish to validate your XSD, which is, afterall, also an XML document, you can use the XML Schema for Schemas. But, again, you'll have to take care to specify to your validator which document is intended to be the XML to be validated and which document is intended to be the XSD.