-
简介
XML,可扩展标记语言,Extensible Markup Language
XML的设计宗旨是传输数据,而非显示数据。XML被设计用来结构化,存储以及传输消息。XML的标签没有预定义,需要自行定义标签,被设计为具有自我描述性。
XML可以使用CSS来进行显示。(不是常用的方法,W3C推荐使用XSLT)
<?xml-stylesheet type="text/css" href="cd_catalog.css"?>
-
用途
XML应用于web开发的许多方面,常用于简化数据的存储和共享。
1. XML把数据从HTML中分离,XML用于存储数据,HTML用于页面布局和显示数据;
2. XML简化数据共享,以纯文本格式存储,提供了独立于软件和硬件的数据存储方法;
3. 简化数据传输,在不兼容的系统之间轻松交换数据;
4. 简化平台的变更,更容易扩展或升级到新的操作系统、应用程序或浏览器;
5. 使数据更有用,独立于硬件、软件以及应用程序;
6. 用于创建新的Internet语言,如WSDL,RSS,WAP,RDF等;
-
XML语法规则
1. 所有XML元素必须有关闭标签;
2. XML标签对大小写敏感;
3. XML必须正确的嵌套;
4. XML文档必须有根元素;
5. 属性值须加引号;
6. 实体引用;
一些字符拥有特殊的意义。例如,“<”不能放在XML元素中,可以用实体引用来<代替。XML中5个预定义的实体引用:
< | < | 小于 |
> | > | 大于 |
& | & | 和号 |
' | ' | 单引号 |
" | " | 引号 |
7. XML中的注释
<!--This is a comment-->
8. XML中的空格会被保留
9. XML以LF存储换行
-
XML元素
1. XML命名规则:
名称可以包含字母,数字以及其他字符;
名称不能以数字或者标点符号开始;
名称不能以字符“xml”开始;
名称不能包含空格;
尽量避免”-”,”.”,”:”;
2. XML元素是可扩展的
可以在不中断应用程序的情况下进行扩展。
-
XML属性
XML属性必须加引号,属性值中的双引号可使用单引号包围或者实体引用。
-
属性VS元素
例子:
<person sex="female"> <firstname>Anna</firstname> <lastname>Smith</lastname> </person> <person> <sex>female</sex> <firstname>Anna</firstname> <lastname>Smith</lastname> </person>
没有规矩告诉什么时候使用属性,什么时候使用子元素。建议XML中,尽量避免使用属性,尽量用元素来描述数据,用属性提供与数据无关的信息;元数据应当存储为属性,例如元素id。
-
XML验证
拥有正确语法的XML叫做“形式良好”的XML,通过DTD验证的XML是“合法”的XML。
1. 形式良好的XML文档
XML 文档必须有根元素 ;
XML 文档必须有关闭标签 ;
XML 标签对大小写敏感 ;
XML 元素必须被正确的嵌套;
XML 属性必须加引号 ;
2. 验证XML
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE note SYSTEM "Note.dtd">
DOCTYPE声明是对外部DTD文件的引用。
3. XML DTD和XML Schema
-
XMLHttpRequest对象
XMLHttpRequest对象用于在后台与服务器交换数据。
-
XML解析器
解析器把XML转换为XML DOM对象,可通过JavaScript操作。
-
XML DOM
DOM(Document Object Model,文档对象模型),定义了访问和操作文档的标准方法。
-
XML命名空间
当两个不同的文档使用相同的元素名时,就会发生命名冲突,而XML解析器无法确定如何处理这类冲突。
1. 使用前缀来避免命名冲突;
此文档带有某个表格中的信息:
<h:table> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table>
此 XML 文档携带着有关一件家具的信息:
<f:table> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table>
2. 使用命名空间
这个 XML 文档携带着某个表格中的信息:
<h:table xmlns:h="http://www.w3.org/TR/html4/"> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table>
此 XML 文档携带着有关一件家具的信息:
<f:table xmlns:f="http://www.w3school.com.cn/furniture"> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table> 3. xmlns属性 被放置在元素的开始标签中,并使用一下语法 xmlns:namespace-prefix="namespaceURI" 当命名空间被定义在元素的开始标签时,所有带有相同前缀的子元素会与同一个命名空间相关联。命名空间中的地址不会被解析器用于查找信息,唯一作用是赋予命名空间一个唯一的名称。不过很多公司常会作为指针来使用命名空间指向实际存在的网页,这个网页包含关于命名空间的信息。 4. 统一资源标识符(URI) 是一串可以标识因特网资源的字符,如URL。 5. 默认的命名空间(Default Namespaces) 为元素定义默认的命名空间可以省去在所有的子元素中使用前缀。 xmlns="namespaceURI"
-
XML CDATA
所有XML文档中的文本都会被解析器解析,除了CDATA区段中的文本。
1. PCDATA
被解析的字符数据;
如<name><first>Bill</first><last>Gates</last></name>
被解析为响应的子元素:
<name> <first>Bill</first> <last>Gates</last> </name>
2. CDATA
不应由XML解析器进行解析的文本数据。
CDATA部分由“<![CDATA[“开始,由”]]>”结束;
CDATA部分不能包含字符串”]]>”,也不允许嵌套CDATA部分。结尾的”]]>”不能包含空格或折行。
-
XML编码
XML文档可以包含非ASCII字符,比如法语。
为了避免错误,需要规定XML编码,或者将XML文档存为Unicode。
可能的错误消息:
1. 在文本内容中发现非法字符:如果XML文档中某个字符与编码属性不匹配;
2. 将当前编码切换为不被支持的指定编码;
-
XML注意事项
使用XML时应该尽量避免使用的技术
1. IE-XML数据岛,是嵌入HTML页面中的XML数据;只支持IE,可用JavaScript和XML DOM来解析和显示XML;
2. IE-行为,通过使用CSS样式向XML元素添加行为的方法,只支持IE。