» 网友学堂 » XML教程 » Web设计中如何使用XML数据
Web设计中如何使用XML数据
作者:问天 发表时间:2007-2-20 11:36 阅读:341次 在百度搜索相关内容

XML
数据源对象是一个ActiveX控件,允许你在
XML
文件和HTML页面之间操作数据。本文将向你展示如何从各种
XML
数据源中提取数据,以及如何使用JavaScript显示这些数据。
  
XML
数据源对象DSO是一个微软ActiveX控件,构建在微软IE4以后的版本上。这个对象允许你把一个外部的
XML
文件或者嵌入HTML文件中的内容提取到HTML页面中。
  你可以在一个Web页面中使用
XML
- DSO从一个外部
XML
文件中选取内容,从嵌入Web页面的
XML
中提取
XML
数据,然后使用JavaScript操作这些数据。然而,并不建议在Internet中使用这个对象,因为DSO只能工作在MSIE 4以上的浏览器中,因此这可能会带来一些兼容性问题。 所以,在企业内部网使用
XML
-DSO是很合适的。
[color=#FFFFFF'][/color]

  开始
  为了初始化
XML
- DSO对象,我们使用<OBJECT>标记。 用于
XML
-DSO的CLASSID是:
[color=#FFFFFF'][/color]

    CLSID:550dda30-0541-11d2-9ca9-0060b0ec3d39
  这ID唯一标识
XML
-DSO。使用下面的代码在一个Web页面中初始化这个控件:
[color=#FFFFFF'][/color]

  <OBJECT ID="SomeID" CLASSID="CLSID:550dda30-0541-11d2-9ca9-0060b0ec3d39"></OBJECT>
[color=#FFFFFF'][/color]

  虽然大部分对象需要许多参数与之相关联,但是
XML
-DSO不需要任何参数。
  使用一个
XML
数据岛析取数据
  首先,通过使用<
XML
>标记包含一个
XML
数据岛。其次,给它分配一个ID,xmldb --以备以后使用。 数据实际上是使用HTML标记:<ALT>,<SPAN>,<DIV>等等提取的。代码列表1中的代码使用了<SPAN>标记。datasrc属性指定了你想从中提取数据的那个数据岛。datafld属性指定了你想要的数据的
XML
标记。所以,第一个<SPAN>提取名称,而第二<SPAN>提取性别。
[color=#FFFFFF'][/color]

  代码列表1:
  <!-- example1.htm -->
  <html>
  <head>
  <title>
XML
DSO-example1.htm</title>
  </head>
  <body bgcolor="#FFFFFF">
  <xml id="xmldb">
  <db>
  <member>
  <name>Premshree Pillai<name>
  <sex>male</sex>
  </member>
  <member>
  <name>Vinod</name>
  <sex>male</sex>
  </member>
  </db>
  </xml>
[color=#FFFFFF'][/color]

  <span datasrc="#xmldb" datafld="name"<</span>
  <br>
  <span datasrc="#xmldb" datafld="sex"></span>
  </body>
  </html>
  注意这段代码没有初始化一个
XML
-DSO对象。这是因为
XML
数据岛的使用中已经隐式地创建了一个。输出应为:
  
  Premshree Pillai
  male
  注意在
XML
数据岛中有两个<name>和<sex>标记。使用这个方法,你只能提取这些标记中的第一个实例。代码列表2中的代码使用<TABLE>标记提取所有的实例:
  输出将是:
    Name         Sex
   Premshree Pillai   male
   Vinod         male
  在代码列表2中,<TABLE>标记使用<TD>标记内的<DIV>标记提取数据。表格将自动重复<member>(<name>和<sex>的母标记)的每个实例。
[color=#FFFFFF'][/color]

  代码列表2:
[color=#FFFFFF'][/color]

  <!-- example2.htm -->
  <html>
  <head>
  <title>
XML
DSO-example2.htm</title>
  </head>
  <body bgcolor="#FFFFFF">
[color=#FFFFFF'][/color]

  <xml id="xmldb">
  <db>
  <member>
  <name>Premshree Pillai<name>
  <sex>male</sex>
  </member>
  <member>
  <name>Vinod</name>
  <sex>male</sex>
  </member>
  </db>
  </xml>
  <table datasrc="#xmldb" border="1">
  <thead>
  <th>Name</th>
  <th>Sex</th>
  </thead>
  <tr>
  <td><div datafld="name"></div></td>
  <td><div datafld="sex"></div></td>
  </tr>
  </table>
  </body>
  </html>
  使用外部
XML
文件提取数据
  为了使用
XML
-DSO加载一个外部
XML
文件,你必须显式的包含这个对象并且使用一些JavaScript。
  首先创建一个
XML
-DSO对象,使用ID my
XML
。添加宽度和高度属性到<OBJECT>标记中,然后设置它们的值为0。这保证
XML
-DSO对象不会占据你的Web页面的任何空间。
  其次,使用datasrc创建一个象my
XML
一样的表--类似于代码列表2中一样。代码使用<DIV>标记(在TD标记之)提取数据,使用datafld作为第一栏的信息,并且使用URL作为第二栏。添加<SCRIPT>标记,因为在这里,外部的
XML
使用Java脚本显式地声明你想要加载的
XML
文件。
  设置变量xmlDso为my
XML
.
XML
Document。my
XML
引用你已经创建的对象。接下来,使用
XML
-DSO的load()方法加载example3.xml。文件example3.xml连接到对象my
XML
上。
  <!-- example3.xml -->
  <?xml version="1.0" ?>
  <ticker>
  <item>
  <message>JavaScript Ticker using
XML
DSO</message>
 <URL>http://someURL.com</URL>
  </item>
  </ticker>
  现在,研究一下下面的HTML页面:
  <!-- example3.htm -->
  <html>
  <head>
  <title>
XML
DSO-example3.htm</title>
  <script language="JavaScript">
  function load() {
  var xmlDso=my
XML
.
XML
Document;
  xmlDso.load("example3.xml");
  }
  </script>
  </head>
  <body bgcolor="#FFFFFF" >
  <object id="my
XML
" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39"
width="0" height="0"></object>
  <table datasrc="#my
XML
" border="1">
  <thead>
  <th>Message</th>
  <th>URL</th>
  </thead>
  <tr>
  <td><div datafld="message"></div></td>
  <td><div datafld="URL"></div></td>
  </tr>
  </table>
  </body>
  </html>
  输出应是:
   Message URL
   JavaScript Ticker using
XML
DSO http://someURL.com
[color=#FFFFFF'][/color]

  上面的脚本非常特殊化。下面给出一个更一般的脚本:
  <script language="JavaScript">
  var xmlDso;
  function load(xmlFile, objName) {
  eval(\'\'xmlDso=\'\' objName \'\'.
XML
Document\'\');
  xmlDso.load(xmlFile);
  }
  </script>
  Now, to load any
XML
file use:
  load("Some
XML
File.xml","anyXmlDsoObject");(csdn)

#Advertisement