XML DTD和XML SCHEMA以及命名空间的作用
讲一下,写这篇博客的原因。作为java程序员,相信大家也都碰到过很多xml作为配置文件的情况。每次使用xml的时候首先copy一份头部过来,可能有些时候还需要改一下。但是每次使用到的时候,我都会抓狂啊,到底我考的是个什么东西啊。但是不拷过来的话,肯定是满满一屏幕的错误啊。所以,决定去了解一下这些是个什么东西。 首先,来讲一下DTD和SCHEMA的作用:其实DTD和SCHEMA的作用一样,都是XML的格式规范。就是说的你的xml得符合什么样的规则。网上看了下,现在schema用的比较多。有替代DTD的趋势。原因是schema比较容易理解,本身也是xml的形式,好像支持比DTD也要多。具体没有深入了解。 以下面的例子来说明吧,一般平时拷贝的就是类似的东西吧。 <?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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" >
xmlns:xml namespace xml命名空间,标准格式为: xmlns:别名=“URI” 比如后面出现的:xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"。这个就是标准的xmlns啦,也有默认的命名空间,如: xmlns="http://www.springframework.org/schema/beans"这个就是默认的命名空间啦。 现在来讲一下有别名的命名空间和默认命名空间的使用上的区别。我觉得可能是为了增加使用的方便和用户体验度吧。默认的命名空间肯定只能有一个。其他的命名空间在使用此命名空间的schema定义的标签时,需要加上命名空间的前缀。而默认命名空间中的标签在使用时就不需要增加前缀啦。你看,还是能够节省不少功夫的,当然你也可以拒绝使用默认命名空间,但是有特权为什么不用呢。 说了那么多的命名空间,还没有说这个命名空间到底有什么作用呢?其实命名空间就是为了区别不同schema中定义了相同的标签,或者说是名称一样。这样如果在同一个xml文件中出现了不同schema中定义的相同名字的标签时,通过加上前缀就可以区分开来了。
可以看到后面还有一大串的配置: xsi:schemaLocation="http://www.springframework.org/schema/beans 恩,xsi是一个命名空间的别名,前面已经配置啦,schemaLocation就是在xsi中定义的。然后里面有一串值,细心观察可以发现,这些值都是成对的,如 http://www.springframework.org/schema/beans 这个意思就是说,命名空间http://www.springframework.org/schema/beans对应的模板文件是http://www.springframework.org/schema/beans/spring-beans-3.0.xsd,这个模板文件其实就是schema了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |