为什么 XSD 离线验证失败但在线有效?

Why is XSD validation failing offline but working online?

我有这两个文件,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: Cannot find the declaration of element 'Schedule'. schedule.xml /knowledge1 line 4 XML Problem

但如果我尝试在其他 PC 上或在线验证它,它就可以工作。 仅当我添加额外的行时:

xsi:schemaLocation="schedule schedule.xsd"

它在我的电脑上有效。我的问题是为什么我只在我的 PC 上收到此错误?我不想修复我的文件 我想知道为什么我只在我的 PC 上收到此错误。

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

特别注意两点:

  1. 您对 xsi:noNamespaceSchemaLocation 的(错误)使用 名称空间无助于 any 处理器将 XSD 与此相关联 文档。
  2. 在线,您提供了更直接的 XSD 您的说明 希望被使用,所以在线处理器不需要 (不正确的)文档内提示。