“http://www.w3.org/2001/XMLSchema-instance”的XSD文件在哪里?

时间:2013-06-13 18:19:30

标签: xsd

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

4 个答案:

答案 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什么也没说的情况提出指导,以及不同的实现在不同的方向发生。