xmlns, xmlns:xsi, xsi:schemaLocation 解释

xmlns, xmlns:xsi, xsi:schemaLocation 解释

xmlnsxsischemaLocation

我们在写 xml 文件时,尤其是 spring 、mybatis 的配置文件时,经常会用到上 xmlns、xmlns:xsi、xsi:schemaLocation 等元素,但多数时候大家都是直接拷贝,并未真正理解这三个元素的具体含义。

今天整理出来,权当备忘。

请看下面一段 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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">

    <bean id="bean" class="com.feshfans.Bean"></bean>
</beans>

xmlns

xmlns 的全称为 xml namespace,即 xml 命名空间,这个很好理解,和 java 中 package 和 c# 中 namespace 的概念基本一致,起的作用也基本一致:区分重复元素

xmlns 格式定义如下:

xmlns[:name] = "uri"

默认命名空间

name 可以忽略不填,即为默认命名空间,如:

xmlns="http://www.springframework.org/schema/beans"

表现效果则为命名空间中的元素可以不加前辍,在此 xml 中直接使用,如上面的

<bean id="bean" class="com.feshfans.Bean"></bean>   // bean 元素可以直接使用
自定义命名空间

我们也可以自定义命名空间的名称,如:

xmlns:context = "http://www.springframework.org/schema/context"  // context 名称可以随便起,如 abc

表现效果为,我们在 xml 文件中使用此命名空间下的元素时,必须加上 context 前辍,如:

<context:component-scan base-package="com.feshfans"></context:component-scan>
为什么?

假如 xml 没有命名空间,spring 定义了 bean 元素,mybatis 也定义了 bean 元素,那么我们使用的是哪个 bean 元素呢?显示易见, xmlns 解决了元素冲突的问题

xmlns:xsi

这本质就是声明一个名为 xsi 的命名空间,其值为一个标准的命名空间

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

此命名空间还定义了 xsi:type, xsi:nil, xsi:schemaLocation 等属性

虽然 xsi 也可以随意用别的名称替换,但不建议这样做。xsi 已经是通用的写法, 是 xml schema instance 的缩写,可以看成是固定写法。

xsi:schemaLocation

此为 xsi 命名空间中定义的一个属性,用于通知 xml 处理器 xml 文档与 xsd 文件的关联关系。

xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">

这里需要注意的是:命名空间和 命名空间的 xsd (xml schema defination,定义了命名空间下元素的写法) 必须成对出现,中间用空格分分隔;可以填写多个对应关系。

这也是一个通用的写法,可以理解为固定写法。

其它

其实,命名空间与其对应的 xsd 文件我们在 jar 中一般都是可以发现的,以 spring-beans.jar 为例:

在 META-INF 目录下,spring.tooling 文件中可以找到命名空间的值,在 spring.schemas 文件中可以找到 xsd 文件的值,同时此文件中也定义了离线 xsd 文件的位置。

原文地址:https://www.cnblogs.com/feshfans/p/11154765.html

时间: 2024-10-12 13:35:40

xmlns, xmlns:xsi, xsi:schemaLocation 解释的相关文章

xml schema xmlns xmlns:xsi xsi:schemaLocation targetnamespace

先上一段xml文档 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:batch="http://www.springframework.org/schema/batch" xmlns:xsi="http://www.w3.org/2001/X

xmlns和xsi之schemaLocation

appplicationContex.xml文件报错:元素 "util:constant" 的前缀 "util" 未绑定 在根节点添加了"xmlns:util="http://www.springframework.org/schema/util" 继续报错:通配符的匹配很全面, 但无法找到元素 'util:list' 的声明. 继续在xsi:schemaLocation里面添加了 http://www.springframework.

关于XML文档的xmlns、xmlns:xsi和xsi:schemaLocation

https://yq.aliyun.com/articles/40353 ************************************* 摘要: 相信很多人和我一样,在编写Spring或者Maven或者其他需要用到XML文档的程序时,通常都是将这些XML文档头拷贝过来,并没有理解其中元素 (比如xmlns,xmlns:xsi,xsi:schemaLocation)的真正含义,不知道哪些元素是多余的,也不知道为什么要加那些元素.这样 当有时候网... 相 信很多人和我一样,在编写Spr

XML文档中的xmlns、xmlns:xsi和xsi:schemaLocation

文章转载自:https://yq.aliyun.com/articles/40353 相信很多人和我一样,在编写Spring或者Maven或者其他需要用到XML文档的程序时,通常都是将这些XML文档头拷贝过来,并没有理解其中元素(比如xmlns,xmlns:xsi,xsi:schemaLocation)的真正含义,不知道哪些元素是多余的,也不知道为什么要加那些元素.这样当有时候网上Copy的XML头有错的时候自己却不知道怎么下手.我也是这样的,于是今天花了点时间好好的理解了一下这些元素及其用法,

xml中的xmlns,xmlns:xsi,xsi:schemaLocation有什么作用,如果没有会怎么样呢

如 maven 的 pom.xml 开头是下面这样的 谁能解释下,这东西有社么用,不写这东西又会怎么样的,官方拷贝来的说明文档就算了,我想要简明扼要的说明. 不胜感激 --------- <project xmlns="http://maven.apache.org/POM/4.0.0"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http:/

【Apache CXF】CXF对JAX-WS的支持

相关dependency,我使用的版本是2.7.11: <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org

xml语法、DTD约束xml、Schema约束xml、DOM解析xml

今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的html语言,html是超文本标记语言,使用html语言规定好的标签来封装文本数据.而html使用的标签html语言规定好的,每个标签都有自己特定的功能. xml语言,可扩展的标记语言,这门语言它没有定义任何的标记,而标记是由使用者自己来定义,但是由于标签名称以及属性名称都由用户自己来命名,导致别人在使

Spring事务配置方式(一) 拦截器方式配置

一.使用<tx:advice>和<aop:config>配置事务 <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSo

基于Spring MVC的Web应用开发(三) - Resources

基于Spring MVC的Web应用开发(3) - Resources 上一篇介绍了在基于Spring MVC的Web项目中加入日志,本文介绍Spring MVC如何处理资源文件. 注意到本项目的web.xml配置的DispatcherServlet对应的url-pattern为"/",即所有的URL请求都会经过 Spring MVC的处理.实际的Web项目有大量的资源文件,如javascript文件,css文件,png,jpg等图片文件,甚至是Flash等等,我们没有 必要对这些静态