XML 复习

以下部分内容取之w3school

XML(Extensible Markup Language)可扩展标记语言

  • 与HTML的区别

HTML(Hyper Text Markup Language)指的是超文本标记语言,一般是用来描述网页,主要用于显示,而XMl则是用于存储数据和传输数据,主要在运用上有所区别

  • XML仅仅是纯文本

XML是不作为的,它就跟txt文件一样,起着存储数据和标记数据的功能,必须要用外部语言去处理它才可以

  • XML没有预定义

XML不需要去引用任何文件,它就在那里,所见及所得,也因此,它可以自己定义标签,所以他也具有自我描述性

  • XML兼容性

前面提到XML是自己不作为的,需要用其它语言处理,好在它所定义的格式,受到了各类编译环境,各种开发平台所支持,所以,它能轻易在各个系统之间传输,可以说非常方便

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

以上代码取之于w3school

第一行介绍了xml的版本以及采用的编码方式,现在阻碍兼容性的一大障碍就跟编码方式有关

"<note>"称之为元素,由于处在第一个,所以叫做根元素,每个元素都必须有一个对应的结尾"</note>"(HTML可以省略关闭标签,但是XML省略是非法的),值得一提的是,每个XML文档必须有且只有一个根元素,其它的都是它的子元素,总结起来,它就是一种树形结构,存在根节点,也存在叶子节点,好像提醒我了要看看XML文件存储的物理结构和逻辑结构了。

 

<book category="COOKING">
  <title lang="en">Everyday Italian</title> 
  <author>Giada De Laurentiis</author> 
  <year>2005</year> 
  <price>30.00</price> 
</book>

再看一段代码,这里面出现了新内容

<book category="COOKING">

这里的catergory就是元素book的一个属性(property),而COOKING就是属性值,属性值必须加引号,这看似简单,其实在实际操作的时候,如何在现实和抽象转换的时候,把元素和属性区分开将是一个难点,换句话说,你可能把元素和属性搞混,比如这里,把catergory看成一个book的子元素你觉得如何。

w3school表明了他们的态度,少用属性,让我们看看他们的利用:

  1. 属性无法包含多重的值(元素可以)
  2. 属性无法描述树结构(元素可以)
  3. 属性不易扩展(为未来的变化)
  4. 属性难以阅读和维护

不愿意去思考这个问题了,因为这真的就像关系数据库在设计的时候,要识别属性和元素一样难以捉摸,我也没有找到很好的办法去解决这种问题,可能这是语言天生的魅力,还是交给语言学家吧。

一般是不会在XML里面做bool运算的,但是如果你非要做,也提供了实体引用:

&lt;<小于
&gt;>大于
&amp;&和号
&apos;'单引号
&quot;"引号

 

<message>if salary &lt; 1000 then</message> 

XML里面还可以添加注释

<!-- This is a comment --> 

我突然忘了HTML怎么注释的了,写的少,给忘了

接下来注意一下元素的命名规则和命名习惯

  1. 名称可以含字母、数字以及其他的字符
  2. 名称不能以数字或者标点符号开始
  3. 名称不能以字符 “xml”(或者 XML、Xml)开始
  4. 名称不能包含空格

这其实真的需要注意,因为有些隐藏的bug就出自于这种,让你难受。

在观看w3school的时候,我发现他们提到了可扩展,就是你原先的xml文件,在被修改添加元素之后,仍然可以运行,这显然很棒,但是这一部分功劳应该归于程序,因为,如果程序真的不在乎你的标记,按顺序读取,完了,崩溃again

<file type="gif">computer.gif</file>

这个功能又和HTML重了,就是提供了不属于数据部分的信息

  • XML的验证

让我们看看w3school如何定义形式良好的XML文档

  1. XML 文档必须有根元素
  2. XML 文档必须有关闭标签
  3. XML 标签对大小写敏感
  4. XML 元素必须被正确的嵌套
  5. XML 属性必须加引号

这里面提到了DTD验证,把这个问题想简单点,就是让你的文件更规范然后做了一个预定义,其实我并不喜欢这样,因为这样子又让程序变得臃肿起来,说好的不预定义的,它存在的合理之处在于它可以验证你的XML是否是正确兼容的,这对于程序本身是加了一个中间件,除非做的非常好用,不然相信我,别用了吧,要是把DTD写错,你不是更难受

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值