讲一下,写这篇博客的原因。作为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
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"
恩,xsi是一个命名空间的别名,前面已经配置啦,schemaLocation就是在xsi中定义的。然后里面有一串值,细心观察可以发现,这些值都是成对的,如
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
这个意思就是说,命名空间http://www.springframework.org/schema/beans对应的模板文件是http://www.springframework.org/schema/beans/spring-beans-3.0.xsd,这个模板文件其实就是schema了
原文链接:https://www.f2er.com/xml/296387.html