01-什么是XML
XML 指可扩展标记语言(EXtensible Markup Language)
ML 的设计宗旨是传输数据,而非显示数据。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准。
XML 仅仅是纯文本。
HTML 旨在显示信息,而 XML 旨在传输信息,XML 是对 HTML 的补充。(区别)
对 XML 最好的描述是:XML 是独立于软件和硬件的信息传输工具。
<p@H_502_20@>@H_502_20@这 是 错 误 的~
<p@H_502_20@>@H_502_20@这 是 正 确 的~</p@H_502_20@>@H_502_20@
XML 标签对大小写敏感
<message@H_502_20@>@H_502_20@这是正确的。</message@H_502_20@>@H_502_20@
<Message@H_502_20@>@H_502_20@这是错误的。</message@H_502_20@>@H_502_20@
XML 必须正确地嵌套
<b@H_502_20@>@H_502_20@<i@H_502_20@>@H_502_20@这 是 正 确 的~</i@H_502_20@>@H_502_20@</b@H_502_20@>@H_502_20@
XML 文档必须有根元素
<root@H_502_20@>@H_502_20@
<child@H_502_20@>@H_502_20@
<subchild@H_502_20@>@H_502_20@这 是 正 确 的~</subchild@H_502_20@>@H_502_20@
</child@H_502_20@>@H_502_20@
</root@H_502_20@>@H_502_20@
XML 的属性值须加引号
<note@H_502_20@ date@H_502_20@="08/08/2008"@H_502_20@>@H_502_20@
<to@H_502_20@>@H_502_20@George</to@H_502_20@>@H_502_20@
<from@H_502_20@>@H_502_20@John</from@H_502_20@>@H_502_20@
</note@H_502_20@>@H_502_20@
03-实体引用
在 XML 中,有 5 个预定义的实体引用:
⁢ < 小于 >@H_502_20@; >@H_502_20@ 大于
& & 和号
' 单引号
" 双引号
04-验证 XML 文档
通过 DTD 验证的 XML 是“合法”的 XML。
W3C 支持一种基于 XML 的 DTD 代替者,它名为 XML Schema。
05-XML XSLT
注释:使用 CSS 格式化 XML 不是常用的方法,更不能代表 XML 文档样式化的未来。W3C 推荐使用 XSLT。
XSLT 是首选的 XML 样式表语言。
XSLT (eXtensible Stylesheet Language Transformations) 远比 CSS 更加完善。
<?xml version="1.0" encoding="ISO-8859-1"?>@H_502_20@
<?xml-stylesheet type="text/xsl" href="simple.xsl"?>@H_502_20@
<breakfast_menu@H_502_20@>@H_502_20@
<food@H_502_20@>@H_502_20@
<name@H_502_20@>@H_502_20@Belgian Waffles</name@H_502_20@>@H_502_20@
<price@H_502_20@>@H_502_20@$5.95</price@H_502_20@>@H_502_20@
<description@H_502_20@>@H_502_20@
two of our famous Belgian Waffles
</description@H_502_20@>@H_502_20@
<calories@H_502_20@>@H_502_20@650</calories@H_502_20@>@H_502_20@
</food@H_502_20@>@H_502_20@
</breakfast_menu@H_502_20@>@H_502_20@
在使用 XSLT 来转换 XML 时,不同的浏览器可能会产生不同结果。为了减少这种问题,可以在服务器上进行 XSLT 转换。
06-XMLHttpRequest对象
XMLHttpRequest 对象用于在后台与服务器交换数据。
用途:
在不重新加载页面的情况下更新网页
在页面已加载后从服务器请求数据
在页面已加载后从服务器接收数据
在后台向服务器发送数据
所有现代的浏览器都支持 XMLHttpRequest 对象。
创建 XMLHttpRequest 对象的语法:
var@H_502_20@ xmlhttp=new@H_502_20@ XMLHttpRequest();
老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:
var@H_502_20@ xmlhttp=new@H_502_20@ ActiveXObject("Microsoft.XMLHTTP"@H_502_20@);
通过 XML HTTP 把一个 textfile 载入一个 div 元素中
通过 XML HTTP 进行 HEAD 请求
通过 XML HTTP 进行指定的 HEAD 请求
通过 XML HTTP 列出 XML 文件中的数据
07-XML解析器
所有现代浏览器都有读取和操作 XML 的内建 XML 解析器。
解析器把 XML 载入内存,然后把它转换为可通过 JavaScript 访问的 XML DOM 对象。
注释:当我们谈及 XML 解析,我们常常会使用有关 XML 元素的术语:节点。
解析 XML 文档
下面的代码片段把 XML 文档解析到 XML DOM 对象中:
if@H_502_20@ (window.XMLHttpRequest)
{// code for IE7+,Firefox,Chrome,Opera,Safari@H_502_20@
xmlhttp=new@H_502_20@ XMLHttpRequest();
}
else@H_502_20@
{// code for IE6,IE5@H_502_20@
xmlhttp=new@H_502_20@ ActiveXObject("Microsoft.XMLHTTP"@H_502_20@);
}
xmlhttp.open@H_502_20@("GET"@H_502_20@,"books.xml"@H_502_20@,false@H_502_20@);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
其他方法 1:通过微软的 XML 解析器来加载 XML
微软的 XML 解析器内建于 Internet Explorer 5 以及更高的版本中。
下面的 JavaScript 片段把一个 XML 文档载入解析器中:
var@H_502_20@ xmlDoc=new@H_502_20@ ActiveXObject("Microsoft.XMLDOM"@H_502_20@);
xmlDoc.async@H_502_20@="false"@H_502_20@;
xmlDoc.load("note.xml"@H_502_20@);
1.上面代码的第一个行创建一个空的微软 XML 文档对象。
2.第二行关闭异步加载,这样确保在文档完全加载之前解析器不会继续脚本的执行。
3.第三行告知解析器加载名为 “note.xml” 的 XML 文档。
其他方法 2:在 Firefox 及其他浏览器中的 XML 解析器
var xmlDoc=document.implementation@H_502_20@.createDocument@H_502_20@(""@H_502_20@,""@H_502_20@,null);@H_502_20@
xmlDoc.async@H_502_20@="false"@H_502_20@;@H_502_20@
xmlDoc.load@H_502_20@("note.xml"@H_502_20@);@H_502_20@
1.上面代码的第一个行创建一个空的 XML 文档对象。
2.第二行关闭异步加载,这样确保在文档完全加载之前解析器不会继续脚本的执行。
3.第三行告知解析器加载名为 “note.xml” 的 XML 文档。
08-解析 XML 字符串
下面的 JavaScript 代码片段把 XML 字符串解析到 XML DOM 对象中(把字符串 txt 载入解析器):
txt="<bookstore><book>"@H_502_20@;
txt=txt+"<title>Everyday Italian</title>"@H_502_20@;
txt=txt+"<author>Giada De Laurentiis</author>"@H_502_20@;
txt=txt+"<year>2005</year>"@H_502_20@;
txt=txt+"</book></bookstore>"@H_502_20@;
if@H_502_20@ (window.DOMParser)
{
parser=new@H_502_20@ DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml"@H_502_20@);
}
else@H_502_20@ // Internet Explorer@H_502_20@
{
xmlDoc=new@H_502_20@ ActiveXObject("Microsoft.XMLDOM"@H_502_20@);
xmlDoc.async@H_502_20@="false"@H_502_20@;
xmlDoc.loadXML(txt);
}
注释:Internet Explorer 使用 loadXML() 方法来解析 XML 字符串,而其他浏览器使用 DOMParser 对象。 注释:loadXML() 方法用于加载字符串(文本),load() 用于加载文件。 跨域访问 出于安全方面的原因,现代的浏览器不允许跨域的访问。