为什么XSD验证无法脱机但在线工作?

时间:2016-11-02 14:22:23

标签: xml eclipse xsd xsd-validation xml-validation

我有这两个文件,XML和XSD。

schedule.xml:

    <?xml version="1.0"?>
    <Schedule xmlns ="schedule"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xsi:noNamespaceSchemaLocation="schedule.xsd">
        <Event>
                <Title>Artificial Intelligence</Title>
                <Lecture>
                    <Day>Wednesday</Day>
                    <Time>09-11</Time>
                </Lecture>
        </Event>
</Schedule>

schedule.xsd:

    <?xml version="1.0"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                          targetNamespace="schedule"
                          xmlns="schedule"
                          elementFormDefault="qualified">
        <xsd:element name="Schedule">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="Event"  maxOccurs="unbounded">
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element name="Title" type="xsd:string"/>
                                <xsd:element name="Lecture">
                                    <xsd:complexType>
                                        <xsd:sequence>
                                            <xsd:element name="Day" type="xsd:string"/>
                                            <xsd:element name="Time" type="xsd:string"/>
                                        </xsd:sequence>
                                    </xsd:complexType>
                                </xsd:element>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:schema>

我在MacOS Sierra(10.12.1)上使用eclipse Neon.1a Release(4.6.1)。当我尝试验证XML文件时,我收到以下错误:

  

cvc-elt.1:找不到元素的声明&#39; Schedule&#39;。 schedule.xml / knowledge1第4行XML问题

但如果我尝试在其他PC或在线上验证它,它可以工作。 只有我把额外的一行:

xsi:schemaLocation="schedule schedule.xsd"

它可以在我的电脑上运行。我的问题是为什么我只在我的电脑上出现此错误?我不想修复我的文件我想知道为什么我只在我的电脑上出现此错误。

1 个答案:

答案 0 :(得分:1)

阅读 How to link XML to XSD using schemaLocation or noNamespaceSchemaLocation?

特别要注意两点:

  1. 您(不正确)在有{。}}的文件上使用xsi:noNamespaceSchemaLocation 命名空间无法帮助任何处理器将XSD与此关联 文档。
  2. 在线,您可以提供更直接的XSD规格 希望被使用,所以在线处理器不需要 (不正确)文档内提示。