XML 文档中的 xmlns 和 schemaLocation 属性不匹配的命名空间
Mismatched namespaces in xmlns and schemaLocation attributes in XML document
我在 w3schools 中找到了一个示例,它展示了如何引用 XML 模式。
对于以下 XSD (note.xsd
)...:[=17=]
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.w3schools.com"
xmlns="https://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
...XML 建议实例:
<?xml version="1.0"?>
<note
xmlns="https://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.w3schools.com/xml note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
请注意,XML 文档 中的 xmlns
和 xsi:schemaLocation
具有不同的命名空间 URI。我知道,URI 未被解析并且不会触发网络 activity,但在这种情况下定义不同的 URI 是否正确(即使域名相同)?
看起来不正确。这些命名空间应该匹配,否则验证器不会将 XML 文档的命名空间(在这种情况下 - 默认命名空间,https://www.w3schools.com
)与来自 note.xsd
的模式中的适当元素声明/类型定义绑定。
让我们根据上面的模式 XML 来验证:
现在用 匹配的 命名空间验证 XML 文档:
在我看来,这只是一个拼写错误,因为 next section.
中表示了相同的 XML 片段(但具有匹配的命名空间)
我在 w3schools 中找到了一个示例,它展示了如何引用 XML 模式。
对于以下 XSD (note.xsd
)...:[=17=]
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.w3schools.com"
xmlns="https://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
...XML 建议实例:
<?xml version="1.0"?>
<note
xmlns="https://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.w3schools.com/xml note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
请注意,XML 文档 中的 xmlns
和 xsi:schemaLocation
具有不同的命名空间 URI。我知道,URI 未被解析并且不会触发网络 activity,但在这种情况下定义不同的 URI 是否正确(即使域名相同)?
看起来不正确。这些命名空间应该匹配,否则验证器不会将 XML 文档的命名空间(在这种情况下 - 默认命名空间,https://www.w3schools.com
)与来自 note.xsd
的模式中的适当元素声明/类型定义绑定。
让我们根据上面的模式 XML 来验证:
现在用 匹配的 命名空间验证 XML 文档:
在我看来,这只是一个拼写错误,因为 next section.
中表示了相同的 XML 片段(但具有匹配的命名空间)