xmlns__0">一、XML 命名空间(namespace)------ xmlns 属性
我们使用xmlns 属性来指定元素的命名空间,格式如下:
xmlns 是 xml namespace的意思,是xml文件规范中用于指定命名空间的保留关键字。其中namespace-prefix是命名空间的前缀prefix,又被叫做别alias,namespaceURI是一个URI格式的命名空间
1、命名空间运用实例
xml"><root><h:table xmlns:h="http://www.w3.org/TR/html4/"><h:tr><h:td>Apples</h:td><h:td>Bananas</h:td></h:tr></h:table><f:table xmlns:f="http://www.w3cschool.cc/furniture"><f:name>African Coffee Table</f:name><f:width>80</f:width><f:length>120</f:length></f:table></root>
其中xmlns:h=“http://www.w3.org/TR/html4/”、xmlns:f="http://www.w3cschool.cc/furniture"指定了两个命名空间;在上面的实例中,<table> 标签的 xmlns 属性定义了 h: 和 f: 前缀的合格命名空间。当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。
命名空间,可以在他们被使用的元素中或者在 XML 根元素中声明:
xml"><root xmlns:h="http://www.w3.org/TR/html4/"xmlns:f="http://www.w3cschool.cc/furniture"><h:table><h:tr><h:td>Apples</h:td><h:td>Bananas</h:td></h:tr></h:table><f:table><f:name>African Coffee Table</f:name><f:width>80</f:width><f:length>120</f:length></f:table></root>
2、默认命名空间
为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。它的语法如下:
xml">xmlns="namespaceURI"
实例如下:
xml"><book xmlns="http://www.hello.com/xml/b"xmlns:a="http://www.hello.com/xml/a">
上边的 xmlns=“http://www.hello.com/xml/b” 并没有指定前缀,那么这种没有指定前缀的命名空间就会作为页面中元素的默认命名空间,除非在标签中使用其他命名空间的前缀,否则解析器都会认为元素是在默认命名空间下存在;但是要注意的是一个文档中只能有一个默认的命名空间,如下的语法是错误的:
xml"><book xmlns="http://www.hello.com/xml/b"xmlns="http://www.hello.com/xml/a">
3、实践中运用
我们这里就以 Spring 中的 XML 文件来进行说明该文件的语法格式:
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:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><context:component-scan base-package="com.springmvc"></context:component-scan><bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/jsp/"></property><property name="suffix" value=".jsp"></property></bean><mvc:default-servlet-handler/><mvc:annotation-driven></mvc:annotation-driven>
</beans>
xmlns=“http://www.springframework.org/schema/beans”: 这里的命名空间没有带前缀,是默认的命名空间,这个空间是属于那些没有写任何前缀的标签,例如 bean 标签就没有写任何前缀,bean 标签就属于这个命名空间
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”: xsi 是 XML Schema Instance 的缩写,也可以自己起别的前缀名(不推荐自己乱起名字,使用约定俗成的前缀可以使 xml 文件结构更加清晰)
这是一个特殊的命名空间,它已经定义好了4个标签分别是 xsi:type、xsi:nil、xsi:schemaLocation、xsi:noNamespaceSchemaLocation,这几个属性只有声明了 xsi 命名空间后才能使用,这里我们只讲我们用到的 xsi:schemaLocation 这个属性
xsi:schemaLocation:这个标签的值分为两个部分,对应的是两个 uri 地址,使用换行符将它们分开,第一行是 xsd 文件的目标命名空间,第二行是 xsd 文件的所在物理位置,它的的作用是引用 xsd 文件来校验指定命名的格式,例如: