XML 注意事项
本节列出了您在使用 XML 时应该尽量避免使用的技术。
Internet Explorer - XML 数据岛
它是什么?XML 数据岛(XML Data Islands)是嵌入 HTML 页面中的 XML 数据。
为什么要避免使用它?XML 数据岛只在 Internet Explorer 浏览器中有效。
用什么代替它?您应当在 HTML 中使用 JavaScript 和 XML DOM 来解析并显示 XML。
如需更多有关 JavaScript 和 XML DOM 的信息,请访问 XML DOM 教程。
XML 数据岛实例
本例使用 XML 文档 "cd_catalog.xml"。
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
<CD>
<TITLE>Greatest Hits</TITLE>
<ARTIST>Dolly Parton</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>RCA</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1982</YEAR>
</CD>
<CD>
<TITLE>Still got the blues</TITLE>
<ARTIST>Gary Moore</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Virgin records</COMPANY>
<PRICE>10.20</PRICE>
<YEAR>1990</YEAR>
</CD>
<CD>
<TITLE>Eros</TITLE>
<ARTIST>Eros Ramazzotti</ARTIST>
<COUNTRY>EU</COUNTRY>
<COMPANY>BMG</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1997</YEAR>
</CD>
<CD>
<TITLE>One night only</TITLE>
<ARTIST>Bee Gees</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Polydor</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1998</YEAR>
</CD>
<CD>
<TITLE>Sylvias Mother</TITLE>
<ARTIST>Dr.Hook</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS</COMPANY>
<PRICE>8.10</PRICE>
<YEAR>1973</YEAR>
</CD>
<CD>
<TITLE>Maggie May</TITLE>
<ARTIST>Rod Stewart</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Pickwick</COMPANY>
<PRICE>8.50</PRICE>
<YEAR>1990</YEAR>
</CD>
</CATALOG>
把 XML 文档绑定到 HTML 文档中的一个 <xml> 标签。id 属性定义数据岛的标识符,而 src 属性指向 XML 文件:
- <html>
- <body>
<xml id="cdcat" src="cd_catalog.xml"></xml>
- <table border="1" datasrc="#cdcat">
- <tr>
- <td><span datafld="ARTIST"></span></td>
- <td><span datafld="TITLE"></span></td>
- </tr>
- </table>
- </body>
- </html>
<table> 标签的 datasrc 属性把 HTML 表格绑定到 XML 数据岛。
<span> 标签允许 datafld 属性引用要显示的 XML 元素。在这个例子中,要引用的是 "ARTIST" 和 "TITLE"。当读取 XML 时,会为每个 <CD> 元素创建相应的表格行。
Internet Explorer - 行为
它是什么?Internet Explorer 5 引入了行为(behaviors)。Behaviors 是通过使用 CSS 样式向 XML (或 HTML )元素添加行为的一种方法。
为什么要避免使用它?只有 Internet Explorer 支持 behavior 属性。
使用什么代替它?使用 JavaScript 和 XML DOM (或 HTML DOM)来代替它。
实例
例子 1 - Mouseover Highlight
下面的 HTML 文件中的 <style> 元素为 <h1> 元素定义了一个行为:
- <html>
- <head>
- <style type="text/css">
- h1 { behavior: url(behave.htc) }
- </style>
- </head>
- <body>
- <h1>Mouse over me!!!</h1>
- </body>
- </html>
以下是 XML 文档 "behave.htc":
- <attach for="element" event="onmouseover" handler="hig_lite" />
- <attach for="element" event="onmouseout" handler="low_lite" />
- <script type="text/javascript">
- function hig_lite()
- {
- element.style.color='red';
- }
- function low_lite()
- {
- element.style.color='blue';
- }
- </script>
这个 behavior 文件包含了一段 JavaScript,以及针对元素的事件句柄。
例子 2 - 打字机模拟
下面的 HTML 文件中的 <style> 元素为 id 为 "typing" 的元素定义了一个行为:
- <html>
- <head>
- <style type="text/css">
- #typing
- {
- behavior:url(typing.htc);
- font-family:'courier new';
- }
- </style>
- </head>
- <body>
- <span id="typing" speed="100">IE5 introduced DHTML behaviors.
- Behaviors are a way to add DHTML functionality to HTML elements
- with the ease of CSS.<br /><br />How do behaviors work?<br />
- By using XML we can link behaviors to any element in a web page
- and manipulate that element.</p>
- </span>
- </body>
- </html>
以下是 XML 文档 "typing.htc":
- <attach for="window" event="onload" handler="beginTyping" />
- <method name="type" />
- <script type="text/javascript">
- var i,text1,text2,textLength,t;
- function beginTyping()
- {
- i=0;
- text1=element.innerText;
- textLength=text1.length;
- element.innerText="";
- text2="";
- t=window.setInterval(element.id+".type()",speed);
- }
- function type()
- {
- text2=text2+text1.substring(i,i+1);
- element.innerText=text2;
- i=i+1;
- if (i==textLength)
- {
- clearInterval(t);
- }
- }
- </script>