Schema命名空间

本文记录Java学习过程中遇到的Schema命名空间~

如果一个XML文档中使用多个Schema文件,而这些Schema文件中定义了相同名称的元素时就会出现名字冲突。这就想一个Java文件中使用了import java.util.*和import java.sql.*时,在使用Data类时,那么就不明确Date类时,那么就不明确Date是哪个包下的Date了。

总之名称空间就是用来处理元素和属性的名称冲突问题,与Java中的包是同一用途。如果每个元素和属性都有自己的名称空间,那么就不会出现名字冲突问题,就像是每个类都有自己所在的包一样,那么类名就不会出现冲突。

约束文档和XML关系

当W3C提出Schema约束规范时,就提供“官方约束文档”。我们通过官方文档,必须“自定义Schema约束文档”,开发中“自定义文档”由框架编写者提供。我们提供“自定义文档”限定,编写出自己的XML文档。

声明命名空间

默认命名空间:

<xxx xmlns="">,使用<标签>

显式命名空间:

<xxx xmlns:别名="">,使用<别名:标签>

示例代码(web-app_2_5.xsd):

<xsd:schema xmlns:xsd="http://www.w3c.org/2001/XMLSchema" ...>

表示自定义Schema约束文档引用官方文档作为显式命名空间。如果要使用官方提供的元素或属性,必须使用xsd前缀(自定义,此处表示官方文档,所以使用xsd)
<xsd:schema>标签就由官方文档提供,默认命名空间直接使用。

示例代码(web.xml):

<web-app xmlns=http://www.example.org/web-app_2_5 ...>

表示XML文档引用“自定义约束文档”作为默认命名空间,因为使用默认命名空间,所以<web-app>可以直接使用。

标签: none