XML + Schema +命名空间。

XML + Schema + Namespaces. No matching global declaration available for the validation root

使用命名空间时引用架构时,正确的语法是什么?

问题

使用给定的架构创建XML文档。

误差

1
2
3
    .xml:9.20: Element '{http://example/buildings/1.0}old_buildings': No matching global declaration available for the validation root.
    oldbuildings.xml - invalid
    Problem

XML文档

1
2
3
4
5
6
7
8
9
10
11
12
13
</p>

[cc lang="xml"]<?xml version="1.0" encoding="UTF-8"?>

<buildings:old_buildings xmlns:buildings="http://example/buildings/1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://example/buildings/1.0 oldbuildings_schema.xsd">
    <building>
        <name>Name</name>
        <year_built era="BC">2000</year_built>
        <story>...<story>
    </building>
</buildings:old_buildings>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
</P><P>XSD文档</P>[cc lang="xml"]

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

    <xs:schema targetNamespace="http://example/buildings/1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://example/buildings/1.0/">
        <xs:element name="old_buildings">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="building"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>

        <xs:element name="building" type="buildingType"></xs:element>


        <xs:complexType name="buildingType">
            <xs:sequence>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="year_built" type="yearType"/>
                <xs:element name="story" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="yearType">
            <xs:simpleContent>
                <xs:extension base="xs:positiveInteger">
                    <xs:attribute name="era" type="xs:string"/>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:schema>


在XML文件中,尝试使用

xmlns:buildings="http://example/buildings/1.0/"

最后,如您的XSD声明中所述:xs:schema targetNamespace="http://example/buildings/1.0/"