一、XML 简介
1、XML 介绍
XML:Extensible Markup Language 可扩展的标记性语言
2、XML 概述
(1)XML 是由 W3C 组织发布,目前推荐遵守的是 W3C组织与2000年发布的 XML1.0 规范;
(2)XML 的使命就是以一个统一的格式,组织有关系的数据,为不同平台下的应用程序服务;
(3)XML用来传输和存储数据,HTML 用来显示数据;
(4)XML 没有预定义标签,均为自定义标签,此处也是体现了 XML 的扩展性。
3、XML 与 HTML 的主要差异
(1)xml 标签都是自定义的,HTML 标签是预定义好的;
(2)xml 的语法非常严格,HTML 语法松散;
(3)xml 是存储或传输数据的,HTML是展示数据的;
(4)XML 被设计为传输和存储数据,其焦点是数据的内容;HTML 被设计用来显示数据,其焦点是数据的外观。
4、
二、XML 用途
XML 主要作用有
1. 用来保存数据,而且这些数据具有自我描述性;
2. 作为项目或工程的配置文件;
3. 作为网络传输数据的格式(目前以 JSON 为主)
三、XML 树结构
XML 文档形成一种树结构
XML 文档必须包含根元素。该元素是所有其他元素的父元素。
XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。
所有元素均可拥有子元素:
1 <root>
2 <child>
3 <subchild>.....</subchild>
4 </child>
5 </root>
父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。
所有元素均可拥有文本内容和属性(类似 HTML 中)。
上图表示下面的 XML 中的一本书:
1 <bookstore>
2 <book category="COOKING">
3 <title lang="en">Everyday Italian</title>
4 <author>Giada De Laurentiis</author>
5 <year>2005</year>
6 <price>30.00</price>
7 </book>
8 <book category="CHILDREN">
9 <title lang="en">Harry Potter</title>
10 <author>J K. Rowling</author>
11 <year>2005</year>
12 <price>29.99</price>
13 </book>
14 <book category="WEB">
15 <title lang="en">Learning XML</title>
16 <author>Erik T. Ray</author>
17 <year>2003</year>
18 <price>39.95</price>
19 </book>
20 </bookstore>
例子中的根元素是 <bookstore>。文档中的所有 <book> 元素都被包含在 <bookstore> 中。
<book> 元素有 4 个子元素:<title>、< author>、<year>、<price>。
四、XML 语法
1、基本语法
(1)xml 文档的后缀名必须为 .xml;
(2)xml 第一行必须定义为文档声明,并且前面没有任何其他字符;
(3)xml 文档中有且仅有一个根标签,根元素就是顶级元素,没有父标签的元素,叫顶级元素,而且是唯一一个;
(4)属性值必须使用引号(单双都可以)引起来;
(5)标签必须正确关闭,不能交叉嵌套;
(6)xml 标签名称严格区分大小写;
(7)标签不能以数字开头;
(8)在 XMl 中,空格会被保留(不会对多余空格删减)
(9)xml 注释:<!-- xml注释内容 -->
Demo:
1 <?xml version="1.0" encoding="utf-8" ?> <!-- XML 声明 -->
2
3 <students> <!-- 根元素 -->
4
5 <student id="1">
6 <name>张三</name>
7 <age>19</age>
8 <sex>男</sex>
9 </student>
10
11 <student id="2">
12 <name>张三</name>
13 <age>19</age>
14 <sex>男</sex>
15 </student>
16
17 </students>
2、文档声明
格式:<?xml 属性列表 ?>
属性列表:
- version:版本号,必须有的属性
- encoding:编码方式,告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1
- standalone:是否独立,取值:yes:不依赖其他文件;no:依赖其他文件
Demo:
<?xml version="1.0" encoding="UTF-8"?>
其中:
<?xml version="1.0" encoding="UTF-8"?> xml 声明。
<!-- xml 声明 version 是版本的意思 encoding 是编码 -->
而且这个<?xml 要连在一起写, 否则会有报错
属性:
version 是版本号
encoding 是 xml 的文件编码
standalone="yes/no" 表示这个 xml 文件是否是独立的 xml 文件
案例:图书有 id 属性 表示唯一 标识, 书名, 有作者, 价格的信息
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- xml 声明 version 是版本的意思 encoding 是编码 -->
3 <books> <!-- 这是 xml 注释 -->
4 <book id="SN123123413241"> <!-- book 标签描述一本图书 id 属性描述 的是图书 的编号 -->
5 <name>java 编程思想</name> <!-- name 标签描述 的是图书 的信息 -->
6 <author>华仔</author> <!-- author 单词是作者的意思 , 描述图书作者 -->
7 <price>9.9</price> <!-- price 单词是价格, 描述的是图书 的价格 -->
8 </book>
9
10 <book id="SN12341235123"> <!-- book 标签描述一本图书 id 属性描述 的是图书 的编号 -->
11 <name>葵花宝典</name> <!-- name 标签描述 的是图书 的信息 -->
12 <author>班长</author> <!-- author 单词是作者的意思 , 描述图书作者 -->
13 <price>5.5</price><!-- price 单词是价格, 描述的是图书 的价格 -->
14 </book>
15 </books>
在浏览器中可以查看到文档
五、XML 元素
1、什么是 XMl 元素
元素是指从开始标签到结束标签的内容。
例如: <title>java 编程思想</title>
元素 我们可以简单的理解为是 标签。
2、XML 命名规则
XML 元素必须遵循以下命名规则:
(1)名称可以包含字母、数字以及其他的字符
1 <book id="SN213412341"> <!-- 描述一本书 -->
2 <author>班导</author> <!-- 描述书的作者信息 -->
3 <name>java 编程思想</name> <!-- 书名 -->
4 <price>9.9</price> <!-- 价格 -->
5 </book>
(2)名称不以数字或者标点符号开始
(3)名称不能以字符 "xml"(或者XML、Xml)开始【其实是可以滴!】
(4)名称不能包含空格
3、XML 中的元素(标签)也分为 单标签和双标签
单标签:
格式: <标签名 属性=”值” 属性=”值” ...... />
双标签:
格式: < 标签名 属性=”值” 属性=”值” ......>文本数据或子标签</标签名>
六、XML 属性
1、XML 属性信息
xml 的标签属性和 html 的标签属性是非常类似的, 属性可以提供元素的额外信息
在标签上可以书写属性:
一个标签上可以书写多个属性。 每个属性的值必须使用 引号 引起来。
属性的规则和标签的书写规则一致。
注意:属性必须使用引号引起来,不引会报错示例代码:
使用属性理念:元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。
2、
七、语法规则
1、所有 XML 元素都须有关闭标签(也就是闭合)
2、XML 标签对大小写敏感
3、XML 必须正确地嵌套
4、XML 文档必须有根元素
根元素就是顶级元素,没有父标签的元素, 叫顶级元素。
根元素是没有父标签的顶级元素, 而且是唯一一个才行。
5、XML 的属性值须加引号
6、XML 中的特殊字符
XML 中的特殊字符与 HTML 中的特殊字符书写一样,请参考这里:特殊字符
7、文本区域( CDATA 区)
CDATA 区:在该区域中的数据会被原样展示
CDATA 语法可以告诉 xml 解析器, 我 CDATA 里的文本内容, 只是纯文本, 不需要 xml 语法解析
CDATA 格式:
<![CDATA[ 这里可以把你输入的字符原样显示, 不会解析 xml ]]>
Demo:
1 <![CDATA[
2 if(a > 5 && b < 8) {
3 return 30;
4 }
5 ]]>
八、XML 验证
拥有正确语法的 XML 被称为“形式良好”的 XML。
通过 DTD 验证的 XML 是“合法”的 XML。
1、良好的 XML 文档
“形式良好”或“结构良好”的 XML 文档拥有正确的语法。
“形式良好”(Well Formed)的 XML 文档会遵守前几章介绍过的 XML 语法规则:
① XML 文档必须有根元素
② XML 文档必须有关闭标签
③ XML 标签对大小写敏感
④ XML 元素必须被正确的嵌套
⑤ XML 属性必须加引号
Demo:
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <note>
3 <to>George</to>
4 <from>John</from>
5 <heading>Reminder</heading>
6 <body>Don't forget the meeting!</body>
7 </note>
2、验证的 XML 文档
合法的 XML 文档是“形式良好”的 XML 文档,同样遵守文档类型定义 (DTD) 的语法规则:
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE note SYSTEM "Note.dtd">
3 <note>
4 <to>George</to>
5 <from>John</from>
6 <heading>Reminder</heading>
7 <body>Don't forget the meeting!</body>
8 </note>
在上例中,DOCTYPE 声明是对外部 DTD 文件的引用。下面的段落展示了这个文件的内容。
3、XML DTD
DTD 的作用是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构:
1 <!DOCTYPE note [
2 <!ELEMENT note (to,from,heading,body)>
3 <!ELEMENT to (#PCDATA)>
4 <!ELEMENT from (#PCDATA)>
5 <!ELEMENT heading (#PCDATA)>
6 <!ELEMENT body (#PCDATA)>
7 ]>
4、XML Schema
W3C 支持一种基于 XML 的 DTD 代替者,它名为 XML Schema:
1 <xs:element name="note">
2
3 <xs:complexType>
4 <xs:sequence>
5 <xs:element name="to" type="xs:string"/>
6 <xs:element name="from" type="xs:string"/>
7 <xs:element name="heading" type="xs:string"/>
8 <xs:element name="body" type="xs:string"/>
9 </xs:sequence>
10 </xs:complexType>
11
12 </xs:element>
九、XML 浏览器
几乎所有的主流浏览器均支持 XML 和 XSLT。
十、XML 查看
1、通过浏览器查看某个 xml 文件
打开 XML 文件 - XML 文档将显示为代码颜色化的根以及子元素。通过点击元素左侧的加号或减号,可以展开或收起元素的结构。如需查看不带有 + 和 - 符号的源代码,请从浏览器菜单中选择“查看源代码”。
注释:在 Netscape, Opera 以及 Safari 中,仅仅会显示元素文本!要查看原始的 XML,请右击页面,然后选择“查看源代码”。
2、查看某个无效的xml 文件
如果浏览器打开了某个有错误的 XML 文件,那么它会报告这个错误。
十一、XML CSS
使用 CSS 来格式化 XML 文档是有可能的。
指令:用来结合 CSS的
Demo:
<?xml-stylesheet type="text/css" href="student.css" ?>
案例:
注意:使用 CSS 格式化 XML 不是常用的方法,更不能代表 XML 文档样式化的未来。W3C 推荐使用 XSLT。
十二、XML XSLT
XSLT 是首选的 XML 样式表语言。
XSLT (eXtensible Stylesheet Language Transformations) 远比 CSS 更加完善。
使用 XSLT 的方法之一是在浏览器显示 XML 文件之前,先把它转换为 HTML,正如以下的这些例子演示的那样:
下面是此 XML 文件的一个片断。 第二行,<?xml-stylesheet type="text/xsl" href="simple.xsl"?>,把这个 XML 文件链接到 XSL 文件: