我的xml不会验证我的架构

时间:2013-04-15 12:53:15

标签: xsd

我刚刚第一次尝试XSD。

当我尝试针对我的XSD验证我的XML时,我收到错误: 找不到元素'连接'的声明。

下面我给出了我的XSD和我的XML的缩减版本。我已经尝试将命名空间限定符添加到我的XML中的顶部元素以及每个元素(将XSD更改为限定),但它没有帮助。我显然犯了一个基本错误。由于我是XSD的新手,如果您可以在XML和/或XSD中包含我需要更改的内容,我将非常感激。

XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.stephenwaring.me.uk/android/nestedsettings"
    xmlns="http://www.stephenwaring.me.uk/android/nestedsettings"
    elementFormDefault="unqualified">
    <xs:element name="linkage">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="preference-screen" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="parent" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="child" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:attribute name="key" type="xs:token" use="required" />
                                                <xs:attribute name="reformat" type="xs:boolean" />
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                    <xs:attributeGroup ref="keyed" />
                                    <xs:attribute name="preference-screen" type="xs:token" use="required" />
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attributeGroup ref="keyed"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attributeGroup ref="defaults"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="defaults">
        <xs:attribute name="html" type="xs:boolean" />
        <xs:attribute name="prefix" type="xs:string" />
        <xs:attribute name="suffix" type="xs:string" />
        <xs:attribute name="separator" type="xs:string"/>
        <xs:attribute name="reformat" type="xs:boolean" />
        <xs:attribute name="shaddow" type="xs:boolean" />   
        <xs:attribute name="child-summary" type="xs:boolean" /> 
        <xs:attribute name="shadow-separator" type="xs:string"/>
    </xs:attributeGroup>
    <xs:attributeGroup name="keyed">
        <xs:attributeGroup ref="defaults" />
        <xs:attribute name="key" type="xs:token" use="required" />
    </xs:attributeGroup>
</xs:schema>

减少XML:

<?xml version="1.0" encoding="UTF-8"?>
<linkage
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://stevewaring.me.uk/android/nestedsettings nestedsettings.xsd"
    xmlns="http://www.stevewaring.me.uk">
    <preference-screen
        key="preferences1">
        <parent
            key="prefFruit"
            preference-screen="preferences2">
            <child key="prefFruit1"/>
            <child key="prefFruit2"/>
        </parent>
    </preference-screen>
</linkage>

1 个答案:

答案 0 :(得分:1)

您的XSD定义了http://www.stephenwaring.me.uk/android/nestedsettings中的元素,而您的文档元素位于http://www.stevewaring.me.uk中。让它们以某种方式达成一致,它应该照顾你所犯的错误。

我添加了一个固定的XML,还有另一个与使用不合格元素相关的问题。

<?xml version="1.0" encoding="UTF-8"?>
<linkage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.stephenwaring.me.uk/android/nestedsettings nestedsettings.xsd" xmlns="http://www.stephenwaring.me.uk/android/nestedsettings">
    <preference-screen xmlns="" key="preferences1">
        <parent key="prefFruit" preference-screen="preferences2">
            <child key="prefFruit1"/>
            <child key="prefFruit2"/>
        </parent>
    </preference-screen>
</linkage>