XSD错误:找不到元素的声明

时间:2017-05-28 18:07:15

标签: xml xsd

我已经经历了其他人对此有同样的问题,但似乎没有任何工作

这是我的XML文件:

<Livraria xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:x="x:livro.xsd" 
      xsi:schemaLocation="livro.xsd LivrariaScheme.xsd">
<Secção nome="Não Ficção">
    <Livros>
        <Livro Secção="Não Ficção">

这是我的XSD:

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

<xs:schema version="1.0"
       attributeFormDefault="unqualified"
       elementFormDefault="qualified"
       xmlns:xs="http://www.w3.org/2001/XMLSchema" 
       targetNamespace="x:livro.xsd"
       xmlns:x="livro.xsd"

&GT;

<xs:element name="Livraria" type="x:TLivraria">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Secção" type="x:Secção"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="TSecção">
    <xs:sequence>
        <xs:element name="Livros" type="x:TLivros"/>
    </xs:sequence>
</xs:complexType>

<xs:complexType name="TLivros">
    <xs:sequence>
        <xs:element name="Livro" type="x:TLivro" maxOccurs="unbounded"/>
    </xs:sequence>
</xs:complexType>

我一直收到这个错误:

cvc-elt.1: Cannot find the declaration of element 'Livraria'.[6]

我错过了什么?

1 个答案:

答案 0 :(得分:0)

像这样的XSD

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

    <xs:element name="Livraria" type="TLivraria"/>

    <xs:complexType name="TLivraria">
        <xs:sequence>
            <xs:element name="Secção" type="TSecção"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="TSecção">
        <xs:sequence>
            <xs:element name="Livros" type="TLivros"/>
        </xs:sequence>
        <xs:attribute name="nome" type="xs:string"/>
    </xs:complexType>

    <xs:complexType name="TLivros">
        <xs:sequence>
            <xs:element name="Livro" type="TLivro" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="TLivro">
        <xs:sequence>
            <xs:element name="name" type="TLivro"/>
        </xs:sequence>
    </xs:complexType>

</xs:schema>

将支持类似

的XML
<Livraria xmlns="remove_me">
    <Secção nome="Não Ficção">
        <Livros>
            <Livro>
                <name>Funny book</name>
            </Livro>
        </Livros>
    </Secção>
</Livraria>

主要问题是你的xsd没有targetNameSpace而你的XML没有引用它('xmlns'属性)。但是你的整个XML和XSD都很破碎。