美文网首页
xml文档的命名空间

xml文档的命名空间

作者: 请叫我李半仙 | 来源:发表于2019-01-23 18:14 被阅读0次

我们在做springmvc项目时经查会看到xml文件中的这种配置,那么他是什么呢

<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"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

xmlns是用来定义xml的命名空间的,那么命名空间是什么,有何作用?

先举个例子,做个类比:
假设我们编程序要创建一个User对象,但是com.a.entity包下有这个User类,com.b.entity包下也有User类,User的属性方法各不相同,程序并不知道你要创建哪个User,于是我们要导入包import com.a.entity.User,程序便清楚了

那么来看xml,我们在xml可以定义任何元素,假设我们在a.xml中定义了一个<user></user>节点,b.xml中也定义了一个<user></user>节点,当程序运行合并xml元素时,程序也不知道要取哪个<user>节点,便有了冲突,怎么办呢?我们也可以定义我们的user元素是来自哪个“包”下面的,于是便有了命名空间,用来定义我的元素来自于哪里

在a.xml中定义xmlns:a="http://xx.com/a",其中a为命名空间http://xx.com/a的别名,在定义user时这样做<a:user></a:user>,b.xml中同理<b:user></b:user>,这样程序便能区分user元素来自哪个定义文件了

当然,在一个xml中可以引入多个命名空间,类似于我们的程序中import多个包,但是全部都使用别名前缀来定义元素似乎很麻烦,所以我们可以选择一个作为默认的xmlns="http://xx.com/default",default下的元素不需要前缀

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"用来定义命名空间所对应的实例定义

xsi:schemaLocation="http://xx.com/a http://xx.com/a/a-3.0.xsd"
他的value总是成对出现,中间空格隔开,空格前面的是我们引入的命名空间,后边是指向的真实地址,因为命名空间可能有多个版本,如果不定义xsi:schemaLocation则默认使用命名空间最新版本文件

在springmvc项目启动时,会检查xml文件的正确性,如果每次到命名空间网络地址去请求文件的话,断网就会有问题,所以他加入了离线文件,在相应的jar包中,存在命名空间的xsd文件,且保存了多个版本的xsd文件,为了升级或降级spring版本时方便

那么命名空间的定义文件如何来写呢(比如http://xx.com/a/a-3.0.xsd)?目前有两种技术,一种是dtd(文档类型定义),一种是schema,他相对于dtd功能更加强大,所以spring采用的都是基于schema的命名空间定义,而html一般是dtd定义,详细比较见后续博客

schema不但可以解决同名元素的问题,还可以定义元素的类型,以及字段,程序据此便可以校验xml配置的是否正确

命名空间在多种文件类型中都可引入,例如xml,htm,html等等

相关文章

  • xml文档的命名空间

    我们在做springmvc项目时经查会看到xml文件中的这种配置,那么他是什么呢 xmlns是用来定义xml的命名...

  • 2018-07-22

    xml入门 xml概述 xml的基本概念/应用场景和优势 xml文档规则 命名空间 xpath语言详解 操作xml...

  • XML 命名空间(XML Namespaces)

    XML 命名空间提供避免元素命名冲突的方法。 命名冲突 在 XML 中,元素名称是由开发者定义的,当两个不同的文档...

  • xml的命名空间

    XML 命名空间提供避免元素命名冲突的方法。 命名冲突 在 XML 中,元素名称是由开发者定义的,当两个不同的文档...

  • xpath

    查询带有命名空间的XML 查询带有命名空间的XML...

  • XML命名空间

    Spring被称为配置地狱,大量的XML需要配置,各类工程的转移等常常因为命名空间出问题。今天对XML知识进行整理...

  • 5.19XML数据生成和数据解析

    在Unity引擎中如何生成本地XML数据? 第一步:引用C#的命名空间System.Xml 第二步:生成XML文档...

  • xpath

    xpath节点 七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点XML 文档是被作为节...

  • XML的命名空间

    命名冲突 因为 XML 文档中使用的元素不是固定的,那么两个不同的 XML 文档使用同一个名字来描述不同类型元素的...

  • 八、基于XML Schema的简化配置方式

    使用p:命名空间简化配置: Chinese.java beans.xml 使用c:命名空间简化配置: p:命名空间...

网友评论

      本文标题:xml文档的命名空间

      本文链接:https://www.haomeiwen.com/subject/hldsjqtx.html