XML是什么
XML -EXtensible Markup Language,是一种可扩展性的标记语言,和HTML形式类似,是一种用来存储和传输数据的语言。
XML作为一种标记语言,它的标签不是预定义的,而是由作者自行定义标签。
XML用来标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言
XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
示例:
<note>
<to>Jackson</to>
<from>二吊子程序媛</from>
<heading>Reminder</heading>
<body>Don't forget the food!</body>
</note>
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>
上述示例代码中,第一行是XML声明,表示XML的版本和所使用的编码方式。
<note>
标签描述的便是该文档的根部,接下来的<to>、<from>、<heading>、<body>
为四个子元素。
XML语法
- 所有xml元素都必须要有关闭标签
<p>This is a paragraph</p>
。 - xml标签对大小写敏感,大小写的标签是不一样的,必须使用相同的大小写来编写打开标签和关闭标签:
<message>这是正确的。</message>
- xml必须正确的嵌套
<b><i>这是错误的嵌套</b></i>
<b><i>这是正确的嵌套</i></b>
- xml必须有根元素
- xml的属性值需加引号
<note date=08/08/2008>错的属性表示</note>
<note date="08/08/2008">正确的属性表示</note>
- xml中的空格会被保留
<p>Hello my name is Xiaoxia.</p>
输出则为:Hello my name is Xiaoxia.
XML 元素
XML元素指的是从(且包括)开始标签直到(且包括)结束标签的部分,元素可以包括属性。
XML元素命名规则
XML 元素必须遵循以下命名规则:
- 名称可以含字母、数字以及其他的字符;
- 名称不能以数字或者标点符号开始;
- 名称不能以字符 “xml”(或者 XML、Xml)开始;
- 名称不能包含空格;
- 可使用任何名称,没有保留的字词;
- 应避免使用"." "-"字符。
XML属性
在 XML中 ,属性提供有关元素的额外信息。
- XML属性必须加引号
<person sex="female">
- 应避免使用属性,因为属性无法描述树结构,且不易扩展。
XML验证
拥有正确语法的 XML 被称为“形式良好”的 XML,通过DTD验证的XML是合法的XML
形式良好(Well Formed)的 XML 文档会遵守前几章介绍过的 XML 语法规则:
- XML 文档必须有根元素
- XML 文档必须有关闭标签
- XML 标签对大小写敏感
- XML 元素必须被正确的嵌套
- XML 属性必须加引号
DTD 的作用是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构:
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
详细的DTD内容请参考DTD验证
XML与HTML
- 相同点
- XML与HTML均为标记语言
- 均有标记标签和标签属性
- 不同点
- XML的设计宗旨是存储传输数据,而HTML主要是为了显示数据
- XML的标签可以自己定义,HTML的标签是规定好的
- XML的标签必须要成对出现,而HTML则不是硬性要求
- XML标签对大小写敏感,HTML则不敏感
- XML属性必须加引号,HTML没有硬性要求
相比HTML,XML支持动态更新,更适合大型网站的开发;而HTML则适合用来开发小型网站,可以提高页面反应速度。
XML与JSON
JSON
JSON:JavaScript Object Notation,JavaScript对象表示法,是存储和交换文本信息的语法,类似于XML,但JSON 比 XML 更小、更快,更易解析。
- JSON 是纯文本
- JSON 具有“自我描述性”(人类可读)
- JSON 具有层级结构(值中存在值)
- JSON 可通过 JavaScript 进行解析
- JSON 数据可使用 AJAX 进行传输
JSON 与XML的区别之处
功能性区别
- XML格式统一,符合标准;但json没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性;
- XML容易与其他系统进行远程交互,数据共享比较方便;但JSON格式目前在Web Service中推广还属于初级阶段;
- XML文件庞大,文件格式复杂,传输占带宽,而json数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
- json没有结束标签,但XML要求标签必须要闭合;
- json数据能够使用内建的 JavaScript eval() 方法进行解析,但对XML而言,客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;
- json支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;而对xml而言,服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护。
详细的区别可参考JSON与XML的区别比较
XHTML与HTML
XHTML 是更严谨更纯净的 HTML 版本,是 HTML 与 XML(扩展标记语言)的结合物.
现在的万维网上有很多不符合HTML规则的页面,但依然可以工作的很好。为了避免这种现象,因此才会推出XHT。
XHTML结合了HTML 和 XML 各自的长处,XML 用来描述数据,XML中的所有东西都会被正确的标记,以产生形式良好的文档;而 HTML 则用来显示数据,结合二者,便出现了XHTML。
XHTML与HTML的差异
- XHTML 元素必须被正确地嵌套。
- XHTML 元素必须被关闭。
- 标签名必须用小写字母。
- XHTML 文档必须拥有根元素。
- 属性名称必须小写
- 属性值必须加引号
- 属性不能简写
- 用 Id 属性代替 name 属性
- XHTML DTD 定义了强制使用的 HTML 元素
如果你想学习XHTML,请参考XHTML教程