错误:"必须引用现有元素"使用altova XMLSpy使用xsd验证xml时

时间:2017-08-27 17:25:17

标签: xml validation xsd schema

好的,首先发布对于任何不清楚的事情抱歉。

问题是,我正在为学校制作一些项目,它包括制作一个完全有效的xml集合,它可以通过xsd和dtd进行验证。

到目前为止我没有任何问题让它通过dtd,它工作正常,但当我尝试用xsd验证它时,我得到了很多这两个错误:"必须引用现有的元素& #34;和"元素声明和类型定义都不知道元素<(whatever)>。严格的评估失败了。"

我一直在这里探索和搜索,但到目前为止没有运气,截止日期即将到来,我开始有点焦虑,因为我没有发现什么是错的。

所以,为了更好地了解我,我会告诉你代码。 这是xml,这是非常基本的东西,但我发誓,我不知道我错在哪里,也许我被烧了没有看到我的错误。

<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE nortesurfshop SYSTEM "nortesurfxsd.xsd"> -->
<nortesurfshop xmlns="http://www.w3schools.com/RedsDevils"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.w3schools.com/RedsDevils nortesurfxsd.xsd">
    <playas>
        <playa num="1" nombre="brazomar">
            <longitud>4.3</longitud>
            <ocupacion>muy alta</ocupacion>
            <mareas altura="bajamar pleamar"/>
            <playasegura/>
        </playa>
        <playa num="2" nombre="orinon">
            <longitud>2</longitud>
            <ocupacion>alta</ocupacion>
            <mareas altura="bajamar"/>
            <playapeligrosa/>
            <socorrista/>
            <parking/>
        </playa>
        <playa num="3" nombre="sonabia">
            <longitud>3</longitud>
            <ocupacion>media</ocupacion>
            <mareas altura="bajamar mediamarea"/>
            <playapeligrosa/>
            <nudista/>
            <parking/>
        </playa>
    </playas>
    <tiendas>
        <tienda id="t1">
            <nombre>NorteSurfShop</nombre>
            <tipo>sede</tipo>
            <propietario>Juan</propietario>
            <venta num="1">
                <nomcliente>Alberto</nomcliente>
                <articulos>
                    <articulo>
                        <nombreArticulo>gafas sol Oakley</nombreArticulo>
                        <precio>83</precio>
                    </articulo>
                </articulos>
                <precioTotal>83</precioTotal>
            </venta>
            <venta num="2">
                <nomcliente>Alfonso</nomcliente>
                <articulos>
                    <articulo>
                        <nombreArticulo>tabla Bodyboard</nombreArticulo>
                        <precio>150</precio>
                    </articulo>
                    <articulo>
                        <nombreArticulo>aletas Pride</nombreArticulo>
                        <precio>50</precio>
                    </articulo>
                </articulos>
                <precioTotal>200</precioTotal>
            </venta>
            <venta num="3">
                <nomcliente>Marta</nomcliente>
                <articulos>
                    <articulo>
                        <nombreArticulo>tabla Channel Islands</nombreArticulo>
                        <precio>280</precio>
                    </articulo>
                    <articulo>
                        <nombreArticulo>invento Billabong azul</nombreArticulo>
                        <precio>12</precio>
                    </articulo>
                </articulos>
                <precioTotal>292</precioTotal>
            </venta>
            <venta num="4">
                <nomcliente>Lucia</nomcliente>
                <articulos>
                    <articulo>
                        <nombreArticulo>Neopreno Kynay</nombreArticulo>
                        <precio>125</precio>
                    </articulo>
                </articulos>
                <precioTotal>125</precioTotal>
            </venta>
        </tienda>
        <tienda id="t2">
            <nombre>almacen</nombre>
            <tipo>almacen</tipo>
            <propietario>Eustaquio</propietario>
        </tienda>
    </tiendas>
    <taquillas>
        <taquilla id="ta1">
            <empleados>1</empleados>
        </taquilla>
        <taquilla id="ta2">
            <empleados>5</empleados>
        </taquilla>
        <taquilla id="ta3">
            <empleados>1</empleados>
        </taquilla>
    </taquillas>
    <escuelas>
        <escuela nombre="arenillas">
            <modalidad tipo="surf"/>
            <modalidad tipo="bodyboard"/>
            <modalidad tipo="SUP"/>
            <profe id="p1"/>
            <profe id="p2"/>
            <profe id="p3"/>
            <profe id="p4"/>
        </escuela>
        <escuela nombre="somo">
            <modalidad tipo="surf"/>
            <modalidad tipo="SUP"/>
            <profe id="p5"/>
            <profe id="p6"/>
            <profe id="p7"/>
            <profe id="p8"/>
            <profe id="p9"/>
            <profe id="p0"/>
        </escuela>
    </escuelas>
    <profesores>
        <profesor id="p1">
            <nombre>Felipe</nombre>
            <apellidos>Rodriguez Alfageme</apellidos>
            <dni>24875551A</dni>
            <sabe>surf bodyboard</sabe>
        </profesor>
        <profesor id="p2">
            <nombre>Laura</nombre>
            <apellidos>Jimenez Esteban</apellidos>
            <dni>22761876W</dni>
            <sabe>surf </sabe>
        </profesor>
        <profesor id="p3">
            <nombre>Felix</nombre>
            <apellidos>Rodriguez Alfageme</apellidos>
            <dni>24875551A</dni>
            <sabe>surf</sabe>
        </profesor>
        <profesor id="p4">
            <nombre>Fernando</nombre>
            <apellidos>Rodriguez Alfageme</apellidos>
            <dni>24875551A</dni>
            <sabe>bodyboard</sabe>
        </profesor>
        <profesor id="p5">
            <nombre>Feliciano</nombre>
            <apellidos>Rodriguez Alfageme</apellidos>
            <dni>24875551A</dni>
            <sabe>surf bodyboard sup</sabe>
        </profesor>
        <profesor id="p6">
            <nombre>Felicitacionado</nombre>
            <apellidos>Rodriguez Alfageme</apellidos>
            <dni>24875551A</dni>
            <sabe>sup surf</sabe>
        </profesor>
        <profesor id="p7">
            <nombre>Felipon</nombre>
            <apellidos>Rodriguez Alfageme</apellidos>
            <dni>24875551A</dni>
            <sabe>surf bodyboard sup</sabe>
        </profesor>
    </profesores>
    <alquileres>
        <alquiler num="1">
            <cliente>
                <nombre>Felix</nombre>
                <apellidos>Rodrigeuz de la Fuente</apellidos>
                <dni>77771906W</dni>
            </cliente>
            <material tipo="surf"/>
            <fechai>2017-12-12</fechai>
            <fechaf>2018-01-03</fechaf>
            <precio>50</precio>
        </alquiler>
        <alquiler num="2">
            <cliente>
                <nombre>Marta</nombre>
                <apellidos>Alcalde Ortiz</apellidos>
                <dni>66666606W</dni>
            </cliente>
            <material tipo="bodyboard"/>
            <fechai>2017-07-12</fechai>
            <fechaf>2017-07-13</fechaf>
            <precio>10</precio>
        </alquiler>
        <alquiler num="3">
            <cliente>
                <nombre>Elena</nombre>
                <apellidos>Firvida Ortiz</apellidos>
                <dni>55555506W</dni>
            </cliente>
            <material tipo="bodyboard"/>
            <fechai>2017-07-10</fechai>
            <fechaf>2017-07-19</fechaf>
            <precio>15</precio>
        </alquiler>
    </alquileres>
    <cursillos>
        <alumno id="1">
            <nombre>Juanjo</nombre>
            <apellidos>Fue a Pescar</apellidos>
            <dni>29991906C</dni>
            <profesor id="p1"/>
            <nivel>medio</nivel>
            <fechai>2017-07-12</fechai>
            <fechaf>2017-07-12</fechaf>
            <precio>10</precio>
        </alumno>
        <alumno id="2">
            <nombre>Maria</nombre>
            <apellidos>de la O</apellidos>
            <dni>88888888W</dni>
            <profesor id="p8"/>
            <nivel>alto</nivel>
            <fechai>2017-08-21</fechai>
            <fechaf>2017-08-26</fechaf>
            <precio>50</precio>
        </alumno>
    </cursillos>
    <competiciones>
        <competicion num="1" modalidad="surf" estilo="aereos">
            <dia>2017-12-10</dia>
            <horainicio>09:30:00</horainicio>
            <competidores>
                <competidor dorsal="a1">
                    <nombre>Aitor</nombre>
                    <apellidos>Jauregui Torre</apellidos>
                    <puntuacion>8 8 4 7</puntuacion>
                    <posicion>1</posicion>
                    <nota>6.5</nota>
                </competidor>
                <competidor dorsal="a2">
                    <nombre>Juan</nombre>
                    <apellidos>Fernandez Montes</apellidos>
                    <puntuacion>8 9 2 1</puntuacion>
                    <posicion>2</posicion>
                    <nota>5</nota>
                </competidor>
            </competidores>
        </competicion>
        <competicion num="3" modalidad="bodyboard" estilo="libre">
            <dia>2017-07-24</dia>
            <horainicio>11:30:00</horainicio>
            <competidores>
                <competidor dorsal="a1">
                    <nombre>Nerea</nombre>
                    <apellidos>Alvarez Velilla</apellidos>
                    <puntuacion>6 6 6 6</puntuacion>
                    <posicion>1</posicion>
                    <nota>6</nota>
                </competidor>
            </competidores>
        </competicion>
    </competiciones>
</nortesurfshop>

这是显然出现问题的xsd,或者我在xml中有它。

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema targetNamespace="http://www.w3schools.com/RedsDevils" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
elementFormDefault="qualified"
xmlns:ns1="http://www.w3schools.com/RedsDevils nortesurfxsd.xsd"
attributeFormDefault="unqualified">
    <xs:element name="nortesurfshop">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="playas"/>
                <xs:element ref="tiendas"/>
                <xs:element ref="taquillas"/>
                <xs:element ref="escuelas"/>
                <xs:element ref="profesores"/>
                <xs:element ref="alquileres"/>
                <xs:element ref="cursillos"/>
                <xs:element ref="competiciones"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="playas">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="playa" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="playa">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="longitud" type="xs:string"/>
                <xs:element name="ocupacion" type="xs:string"/>
                <xs:element ref="mareas"/>
                <xs:element name="playasegura" type="xs:string"/>
                <xs:element name="playapeligrosa" type="xs:string"/>
                <xs:element name="nudista" type="xs:string"/>
                <xs:element name="socorrista" type="xs:string"/>
                <xs:element name="parking" type="xs:string"/>
            </xs:sequence>
            <xs:attribute name="nombre" type="xs:string" use="required"/>
            <xs:attribute name="num" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="mareas">
        <xs:complexType>
            <xs:attribute name="altura" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="tiendas">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="tienda" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="tienda">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="nombre" type="xs:string"/>
                <xs:element name="tipo" type="xs:string"/>
                <xs:element name="propietario" type="xs:string"/>
                <xs:element ref="venta" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attribute name="id" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="venta">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="nomcliente" type="xs:string"/>
                <xs:element ref="articulos"/>
                <xs:element name="precioTotal" type="xs:string"/>
            </xs:sequence>
            <xs:attribute name="num" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="articulos">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="articulo" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="articulo">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="nombreArticulo" type="xs:string"/>
                <xs:element name="precio" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="taquillas">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="taquilla" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="taquilla">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="empleados" type="xs:string"/>
            </xs:sequence>
            <xs:attribute name="id" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="escuelas">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="escuela" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="escuela">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="modalidad" maxOccurs="unbounded"/>
                <xs:element ref="profe" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attribute name="nombre" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="modalidad">
        <xs:complexType>
            <xs:attribute name="tipo" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="profe">
        <xs:complexType>
            <xs:attribute name="id" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="profesores">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="profesor" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="profesor">
        <xs:complexType>
            <xs:sequence minOccurs="0">
                <xs:element name="nombre" type="xs:string"/>
                <xs:element name="apellidos" type="xs:string"/>
                <xs:element name="dni" type="xs:string"/>
                <xs:element name="sabe" type="xs:string"/>
            </xs:sequence>
            <xs:attribute name="id" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="alquileres">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="alquiler" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="alquiler">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="cliente"/>
                <xs:element ref="material"/>
                <xs:element name="fechai" type="xs:string"/>
                <xs:element name="fechaf" type="xs:string"/>
                <xs:element name="precio" type="xs:string"/>
            </xs:sequence>
            <xs:attribute name="num" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="cliente">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="nombre" type="xs:string"/>
                <xs:element name="apellidos" type="xs:string"/>
                <xs:element name="dni" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="material">
        <xs:complexType>
            <xs:attribute name="tipo" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="cursillos">
        <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 name="nombre" type="xs:string"/>
                <xs:element name="apellidos" type="xs:string"/>
                <xs:element name="dni" type="xs:string"/>
                <xs:element ref="profesor"/>
                <xs:element name="nivel" type="xs:string"/>
                <xs:element name="fechai" type="xs:string"/>
                <xs:element name="fechaf" type="xs:string"/>
                <xs:element name="precio" type="xs:string"/>
            </xs:sequence>
            <xs:attribute name="id" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="competiciones">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="competicion" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="competicion">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="dia" type="xs:string"/>
                <xs:element name="horainicio" type="xs:string"/>
                <xs:element ref="competidores"/>
            </xs:sequence>
            <xs:attribute name="acabada" type="xs:string" default="acabada"/>
            <xs:attribute name="estilo" type="xs:string" use="required"/>
            <xs:attribute name="modalidad" type="xs:string" use="required"/>
            <xs:attribute name="num" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="competidores">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="competidor" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="competidor">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="nombre" type="xs:string"/>
                <xs:element name="apellidos" type="xs:string"/>
                <xs:element name="puntuacion" type="xs:string"/>
                <xs:element name="posicion" type="xs:string"/>
                <xs:element name="nota" type="xs:string"/>
            </xs:sequence>
            <xs:attribute name="dorsal" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
</xs:schema>

总结一下,我认为问题是,如何摆脱这两个错误,例如,我随处可见:

  

&#39;本塔&#39;必须引用现有元素。

Neither an element declaration nor a type definition is known for element <nortesurfshop>. Strict assessment failed.
    Error location: nortesurfshop
    Details
        cvc-assess-elt.1: Neither an element declaration nor a type definition is known for element <nortesurfshop>. Strict assessment failed.

我确定有一些我没有发布的信息你可能需要,在这种情况下,我肯定会在你提出后迅速给它。

提前感谢您的时间。

编辑:我忘了说,我试图修复它而不改变xml的方式它不会被dtd有效,所以我更喜欢只触摸xsd

1 个答案:

答案 0 :(得分:0)

要使 Rc.all('demo/example/db/').get('quues/').then(function(res) { $scope.demo={} $scope.demo.details={ value1 : res.Ksus.Type.Master.Origin.ID, } $scope.array={} $scope.array.arrValue={ arrVal : res.Asus[0].AsuID, } } 工作,请在架构的根元素上添加ref。并且xmlns="http://www.w3schools.com/RedsDevils"是完全错误的,我不知道你有什么用,如果你想将命名空间绑定到前缀然后使用例如xmlns:ns1="http://www.w3schools.com/RedsDevils nortesurfxsd.xsd",您可以使用例如{}修复所有这些引用。 xmlns:ns1="http://www.w3schools.com/RedsDevils"