锁定老帖子 主题:XML 基础之 XML 数据岛简介
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (5)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-20
自 Microsoft Internet Explorer 5.0 起,Internet Explorer 有一个非标准特性称为 XML 数据岛,它允许使用非标准 HTML 标签 什么是 XML 数据岛? 数据岛就是被HTML页面引用或包含的XML数据,XML数据可以包含在HTML文件内,也可以包含在某外部文件内。就像 JavaScript 和 CSS 一样,你可以在 HTML 文挡中直接嵌入 XML 数据,也可以引用外部的 XML 数据。在把 XML 文档绑定到 HTML 文档中的一个 <xml> 标签。其id 属性为数据岛定义标识符,而其 src 属性指向 XML 文件。示例代码如下: xmldataisland.hmtl 文件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>xml data island</title> </head> <body> <xml id="employees"> <!-- 唯一 id --> <?xml version="1.0" encoding="utf-8" ?> <employees> <employee> <id>1</id> <name>zhaipuhong</name> <gender>male</gender> <age>28</age> </employee> <employee> <id>2</id> <name>dingxia</name> <gender>female</gender> <age>25</age> </employee> </employees> </xml> <xml id="majors" src="major.xml"></xml> <!-- 唯一 id --> <table datasrc="#employees"> <!-- 请不要忘了符号 '#' --> <tr><!--<div> 标签允许 datafld 属性引用要显示的 XML 元素--> <td><div datafld="id"></div></td> <td><div datafld="name"></div></td> <td><div datafld="gender"></div></td> <td><div datafld="age"></div></td> </tr> </table> <table datasrc="#majors"> <!-- 请不要忘了符号 '#' --> <tr><!--<span> 标签允许 datafld 属性引用要显示的 XML 元素--> <td><span datafld="name"></span></td> <td><span datafld="term"></span></td> </tr> </table> </body> </html>
major.xml 文件 <?xml version="1.0" encoding="utf-8"?> <majors> <major> <name>Information Technology</name> <term>4 year</term> </major> <major> <name>mathimatics</name> <term>4 year</term> </major> </majors>
<table> 标签的 datasrc 属性把 HTML 表格绑定到 XML 数据岛。
运行结果如下: 1 zhaipuhong male 28 2 dingxia female 25 Information Technology 4 year mathimatics 4 year
以上简单介绍了 IE 浏览器中使用 XML 数据岛 ,那么要跨浏览器使用 XML 数据岛 则应该使用 XML DOM 解析器。它解析包含序列化 XML 文档的字符串并为解析后的 XML 生成文档。Mozilla 使用
微软的 XML 解析器内建于 Internet Explorer 5 以及更高的版本中,在 JavaScript 中创建并载入 xml 文件: //创建一个空的微软 XML 文档对象 var xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; //关闭异步加载 //解析器加载 XML 文档 xmlDoc.load("major.xml"); //若加载xml字符串而非XML文件,使用下面的语句 //xmlDoc.loadXML(xmlString); //加载 xml 字符串(文本),根据需要选用 //注意:loadXML() 方法用于加载字符串(文本),load() 用于加载文件
在 Mozilla 的 Firefox 及其他浏览器中的 XML 解析器 ,示例如下: //创建一个空的微软 XML 文档对象 var xmlDoc=document.implementation.createDocument("","",null); xmlDoc.async="false"; //关闭异步加载 //加载 XML 文档 xmlDoc.load("major.xml"); //若加载xml字符串而非XML文件,使用下面的语句 var parser=new DOMParser(); var doc=parser.parseFromString(xmlString,"text/xml");
下面给一个完整是浏览器兼容的示例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>浏览器兼容的 XML DOM 实例</title> </head> <body> <script> //一个浏览器兼容的实例 var xmlDoc = null; if(window.ActiveXObject){ xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); //Internet Explorer }else if(document.implementation.createDocument){ xmlDoc = document.implementation.createDocument("","",null); //Mozilla } xmlDoc.async=false; xmlDoc.load("major.xml"); document.write(xmlDoc.getElementsByTagName("name")[0].childNodes[0].nodeValue); </script> </body> </html>
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 3610 次