14

命名空间“ http://www.w3.org/2001/XMLSchema-instance ”的 XSD 模式定义文件在哪里?

4

4 回答 4

15

听起来很奇怪,但是http://www.w3.org/2001/XMLSchema-instance命名空间的 XML 模式确实存在,并且可以通过命名空间 URI 表示的 URL 找到:http: //www.w3.org/2001/XMLSchema-instance

作为证明,只需在 HTML 浏览器(例如 FireFox)中打开该链接 (URL)。您可能会看到一些 HTML 文本,例如:“XML Schema instance namespace ...”。然后,将该“HTML”作为文件保存在您的计算机上(例如,文件|将页面另存为)。当您查看此文件时,您会发现它根本不是 HTML。相反,它是该名称空间的完整 XML 模式!

同样,您可以将http://www.w3.org/2001/XMLSchema-instance命名空间导入您自己的架构,如下所示:

<xs:import namespace="http://www.w3.org/2001/XMLSchema-instance"
           schemaLocation="http://www.w3.org/2001/XMLSchema-instance"/>

另请参阅此问题:Error while parsing xsd using xjc,虽然听起来非常不同,但实际上与同一问题非常相关。

于 2013-06-14T01:38:47.287 回答
3

只是火上浇油——许多 XML 工具都知道http://www.w3.org/2001/XMLSchema-instance 已烘焙,因此看起来您根本不需要模式。事实上,如果您使用的 XML 工具不包含这些知识,那么您就需要模式。

于 2013-06-13T18:19:29.980 回答
3

因此,我们发现实际上总是在根本没有 xml-schema xsd 声明的 xml 文档的开头?例如像这样:

<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jee="http://www.springframework.org/schema/jee" 
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 

         http://www.springframework.org/schema/jee 
         http://www.springframework.org/schema/jee/spring-jee-3.2.xsd 

         http://www.springframework.org/schema/util 
         http://www.springframework.org/schema/util/spring-util-3.2.xsd">
于 2015-08-27T08:37:28.997 回答
1

以下是有关此主题的一些更新信息。

XSD 1.1 第 1 部分 §2.7 规定:

XML 模式定义语言:结构定义了几个可直接用于任何 XML 文档的属性。这些属性位于上述模式实例命名空间 (xsi) (§1.3.1.2) 中描述的模式实例命名空间 ( http://www.w3.org/2001/XMLSchema-instance ) 中。所有模式处理器都必须为这些内置属性提供适当的属性声明。

此外,§3.2.6.4 说:

属性声明的 {target namespace},无论是本地的还是顶级的,都不能与http://www.w3.org/2001/XMLSchema-instance匹配 (除非它是在下一节)。注意:这加强了这些属性的特殊状态,因此它们不仅不需要在实例中被声明为允许,而且由于刚刚给出的规则而不能被声明。

因此,您不能在模式文档中声明 xsi:type 或 xsi:schemaLocation 等属性,因此您不能导入试图声明此类属性的模式文档。

这当然是 XSD 1.1,因此不直接限制 XSD 1.0 处理器。但是,它是 XSD 1.1 为 XSD 1.0 什么都没说的情况以及不同实现朝着不同方向发展的情况发布指导的众多领域之一。

于 2018-04-24T11:02:08.707 回答