命名空间“http://www.w3.org/2001/XMLSchema-instance”的XSD架构定义文件在哪里?
答案 0 :(得分:13)
可能听起来很奇怪,但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,虽然听起来非常不同,但实际上与同一问题非常相关。
答案 1 :(得分:2)
只是为火上浇油 - 许多XML工具都知道http://www.w3.org/2001/XMLSchema-instance baked-in,所以看起来你根本不需要架构。实际上,如果您使用的是没有烘焙此知识的XML工具,则需要该模式。
答案 2 :(得分:2)
因此,我们发现实际上始终是xml文档的开头,其中包含xml-schema xsd声明?例如:
<?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">
答案 3 :(得分:1)
以下是有关此主题的一些更新信息。
XSD 1.1第1部分§2.7声明:
XML模式定义语言:结构定义了几个属性 直接用于任何XML文档。这些属性在 模式实例命名空间(http://www.w3.org/2001/XMLSchema-instance) 在上面的Schema Instance Namespace(xsi)(§1.3.1.2)中描述。所有 架构处理器必须具有适当的属性声明 内置了这些属性。
此外,§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什么也没说的情况提出指导,以及不同的实现在不同的方向发生。