繁体   English   中英

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

[英]error: “must refer to an existing element” when validating a xml with a xsd using altova XMLSpy

好吧,先发帖,对于任何不清楚的事,请提前对不起。

问题是,我要为某种学校项目进行项目,包括制作一组完全有效的xml,可以同时通过xsd和dtd进行验证。

到目前为止,我没有遇到任何麻烦,使其通过dtd可以正常工作,但是当我尝试使用xsd对其进行验证时,我得到了很多以下两个错误:“必须引用现有元素”和“两者都不元素<(无论如何)>的元素声明或类型定义都是已知的。严格评估失败。”

我一直在这里进行搜索和搜索,但是到目前为止还没有运气,并且到期日期到了,我开始有点着急了,因为我没有发现什么问题。

因此,为了更好地理解我,我将向您显示代码。 这是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>

总结起来,我认为问题是,例如,如何消除这两个错误,因为我到处都有它们:

“ venta”必须引用现有元素。

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.

我确定我还没有发布一些您可能需要的信息,在这种情况下,我一定会在您询问后迅速给出信息。

预先感谢您的宝贵时间。

编辑:我忘了说,即时消息试图修复它而不更改dtd无效的xml,所以我更喜欢只触摸xsd

为了使您的ref工作正常,请在模式的根元素上添加xmlns="http://www.w3schools.com/RedsDevils" xmlns:ns1="http://www.w3schools.com/RedsDevils nortesurfxsd.xsd"是完全错误的,我不确定您的xmlns:ns1="http://www.w3schools.com/RedsDevils nortesurfxsd.xsd"是什么,如果要将命名空间绑定到前缀,请使用例如xmlns:ns1="http://www.w3schools.com/RedsDevils" ,然后可以使用ref="ns1:venta"修复所有这些ref="ns1:venta"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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