深入浅出xml之schema约束

编程入门 行业动态 更新时间:2024-10-03 08:24:44

<a href=https://www.elefans.com/category/jswz/34/1769764.html style=深入浅出xml之schema约束"/>

深入浅出xml之schema约束

文章目录

    • 1、 为什么需要xmlns?
    • 2、 在了解了为什么要用xmlns之后,随之要解决的问题是怎么使用xmlns?
    • 3、xsi:schemaLocation有何作用?

    XML文件,简而言之是由一系列有标记作用的标签对组成的文件。在开发工程中,XML不能随意的编写,要符合一定的规则。比如父标签都包含哪些子标签,子标签的顺序如何,标签含有哪些属性,标签内容是什么类型…也就是说XML文件要符合一定的约束。目前对XML文件的约束有两种,一种是dtd约束,另一种是schema约束。如mybatis、struts中XML文件用dtd约束,spring中XML文件用schema约束。dtd的作用机理是一种命令式的,告诉被约束的XML文件一系列的规则来,按照此规则来即可。与dtd不同,schema则更像是一种模板,XML文件按照模板写即可。毫无疑问schema约束是一种相较于dtd约束方式更优的一种方式,现在的项目开发中schema逐渐替代dtd方式,其优点主要有以下几点:
 - XML Schema符合XML语法结构。有更强的可读性。
 - DOM、SAX等XML API很容易解析出XML Schema文档中的内容。
 - XML Schema对名称空间支持得非常好。这是dtd的一个痛点。
 - XML Schema比XML DTD支持更多的数据类型,并支持用户自定义新的数据类型。
 - XML Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制。
 - XML Schema不能像DTD一样定义实体,比DTD更复杂,但Xml Schema现在已是w3c组织的标准,它正逐步取代DTD。

本篇文章主要讲解下schema约束。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi=""xmlns=""xsi:schemaLocation=" .xsd"id="WebApp_ID" version="3.0"><display-name>java_review</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list>
</web-app>

    这是在eclipse中新建的一个web工程中自带的web.xml文件。我相信很多同学跟作者一样做了很多年的开发,见到这种文件已经麻木了,如果问一句为什么文件开始几行是这样写,我们会回答一直都是这样写,没出过问题啊,如果开发任务紧没时间思考情有可原,当闲暇的时候我们如果还不花点时间去了解清楚,长此以往对我们技术的精进是没有任何好处的。

1、 为什么需要xmlns?

假设有这种情况一个xml文件中有如下片段:

<table><name>African Coffee Table</name><width>80</width><length>120</length>
</table><table><tr><td>Apples</td><td>Bananas</td></tr>
</table>

    两个table表达的内容不一样,会被不同的schema文件约束,也就是说此xml文件会引入多个schema文件,具体哪个schema约束哪个table该如何确定,如此一来xmlns就起到了作用,下列代码一看了然。

<xsd1:table><xsd1:name>African Coffee Table</xsd1:name><xsd1:width>80</xsd1:width><xsd1:length>120</xsd1:length>
</xsd1:table><xsd2:table><xsd2:tr><xsd2:td>Apples</xsd2:td><xsd2:td>Bananas</xsd2:td></xsd2:tr>
</xsd2:table>

2、 在了解了为什么要用xmlns之后,随之要解决的问题是怎么使用xmlns?

就拿上例来说,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns=""xmlns:xsd1=""xmlns:xsd2=""xmlns:xsi=""
xsi:schemaLocation=" 
.xsd 
.xsd"><xsd1:table><xsd1:name>African Coffee Table</xsd1:name><xsd1:width>80</xsd1:width><xsd1:length>120</xsd1:length></xsd1:table><xsd2:table><xsd2:tr><xsd2:td>Apples</xsd2:td><xsd2:td>Bananas</xsd2:td></xsd2:tr></xsd2:table>
</root>

xmlns和xmlns:xsi有什么区别,xmlns指定默认命名空间,一般xml文件都会被一个默认xml约束,这样一来在写xml文件中的标签时就不用带命名空间约束。xmlns:xsi表示使用xsi作为前缀的Namespace,当然前缀xsi需要在文档中声明。

3、xsi:schemaLocation有何作用?

    我们现在回顾下上面讲的xml会被一个schema文件约束,schema文件其实也是一个xml文件,它自然而然也会被一个schema文件约束,最终就会有一个终极的约束文件,它就是被一个叫做。
    现在我们就很容易理解xml文件中 xmlns:xsi=“” 和xsi:schemaLocation的作用了,至于为什么一定是xsi(xml schema instance),那就是王八的臀部-龟腚(规定)了,大家只需记住这是一种固定写法即可。
    至此,我们再次看复杂的spring配置文件就会觉得有更深入的理解。

更多推荐

深入浅出xml之schema约束

本文发布于:2024-02-28 00:52:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1766932.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:深入浅出   xml   schema

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!