Web设计中如何使用XML数据源对象

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
L 数据源对象是一个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是很合适的。

   开始

  为了初始化 XML - DSO对象,我们使用<OBJECT>标记。 用于 XML-DSO的CLASSID是:

    CLSID:550dda30-0541-11d2-9ca9-0060b0ec3d39

  这ID唯一标识 XML-DSO。使用下面的代码在一个 Web页面中初始化这个控件:

  <OBJECT ID="SomeID" CLASSID="CLSID:550dda30-0541-11d2-9ca9-0060b0ec3d39"></OBJECT>

  虽然大部分对象需要许多参数与之相关联,但是 XML-DSO不需要任何参数。

   使用一个XML数据岛析取数据

  首先,通过使用< XML>标记包含一个 XML数据岛。其次,给它分配一个ID, XMLdb --以备以后使用。 数据实际上是使用HTML标记:<ALT>,<SPAN>,等等提取的。代码列表1中的代码使用了<SPAN>标记。datasrc属性指定了你想从中提取数据的那个数据岛。datafld属性指定了你想要的数据的 XML标记。所以,第一个<SPAN>提取名称,而第二<SPAN>提取性别。

  代码列表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

<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中的代码使用标记提取所有的实例:

  输出将是:
    Name Sex Premshree Pillai male Vinod male
  在代码列表2中,标记使用标记内的标记提取数据。表格将自动重复<member>(<name>和<sex>的母标记)的每个实例。

  代码列表2:

<!-- example2.htm -->
<html>
<head>
<title> XML DSO-example2.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


<thead>
<th>Name</th>
<th>Sex</th>
</thead>






</body>
</html>
  使用外部XML文件提取数据

  为了使用XML-DSO加载一个外部XML文件,你必须显式的包含这个对象并且使用一些JavaScript。

  首先创建一个XML-DSO对象,使用ID myXML。添加宽度和高度属性到<OBJECT>标记中,然后设置它们的值为0。这保证XML-DSO对象不会占据你的Web页面的任何空间。

  其次,使用datasrc创建一个象myXML一样的表--类似于代码列表2中一样。代码使用标记(在TD标记之)提取数据,使用datafld作为第一栏的信息,并且使用URL作为第二栏。添加
</head>
<body bgcolor="#FFFFFF" onLoad="load()">

<object id="myXML" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39"
width="0" height="0"></object>


<thead>
<th>Message</th>
<th>URL</th>
</thead>






</body>
</html>
  输出应是:

   Message URL
   JavaScript Ticker using XML DSO http://someURL.com

  上面的脚本非常特殊化。下面给出一个更一般的脚本:


Now, to load any XML file use:
load("SomeXMLFile.XML","anyXMLDsoObject");
  使用XML-DSO和JavaScript

  假设你有一个包含姓名、电子邮件地址和电话号码的XML文件。你想使用它构建一个应用程序,显示每个人的档案--一次显示一个。用户将使用"Next"和"Previous"按钮浏览每个人的数据。Javascript可以帮助你实现这个目的。

  下面的代码使用记录集方法把文件中所有的数据保存到一个变量memberSet中。moveNext()方法指向下一个数据项(下一行)。脚本然后载入XML文件example4.XML,把记录保存到变量memberSet中。第一个记录将被显示,但是memberSet.moveNext()指向文件中相对于前一个指定数据的下一个记录。

<!-- example4.XML -->
<?XML version="1.0" ?>
<myDB>
<member>
<name>Premshree Pillai</name>
<sex>male</sex>
</member>
<member>
<name>Vinod</name>
<sex>male</sex>
</member>
<member>
<name>Santhosh</name>
<sex>male</sex>
</member>
</myDB>
  这里是相应的HTML文件:

<!-- example4.htm -->
<html>
<head>
<title>XML DSO-example4.htm</title>

</head>
<body bgcolor="#FFFFFF" onLoad="load()">

<object id="myDB" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39"
width="0" height="0"></object>

<span datasrc="#myDB" datafld="name"></span>

</body>
</html>
  输出应是:

   Vinod

  下面给出更多使用JavaScript操作XML-DSO的方法:

   · movePrevious(): 指向前一个数据项。

   · moveFirst(): 指向第一个数据项。

   · moveLast(): 指向最后一个数据项。

   · EOF: 这个属性用来检测我们是否已经到达数据记录的底部。

  使用XML-DSO和JavaScript

  假设你有一个包含姓名、电子邮件地址和电话号码的XML文件。你想使用它构建一个应用程序,显示每个人的档案--一次显示一个。用户将使用"Next"和"Previous"按钮浏览每个人的数据。Javascript可以帮助你实现这个目的。

  下面的代码使用记录集方法把文件中所有的数据保存到一个变量memberSet中。moveNext()方法指向下一个数据项(下一行)。脚本然后载入XML文件example4.XML,把记录保存到变量memberSet中。第一个记录将被显示,但是memberSet.moveNext()指向文件中相对于前一个指定数据的下一个记录。

<!-- example4.XML -->
<?XML version="1.0" ?>
<myDB>
<member>
<name>Premshree Pillai</name>
<sex>male</sex>
</member>
<member>
<name>Vinod</name>
<sex>male</sex>
</member>
<member>
<name>Santhosh</name>
<sex>male</sex>
</member>
</myDB>
  这里是相应的HTML文件:

<!-- example4.htm -->
<html>
<head>
<title>XML DSO-example4.htm</title>

</head>
<body bgcolor="#FFFFFF" onLoad="load()">

<object id="myDB" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39"
width="0" height="0"></object>

<span datasrc="#myDB" datafld="name"></span>

</body>
</html>
  输出应是:

   Vinod

  下面给出更多使用JavaScript操作XML-DSO的方法:

   · movePrevious(): 指向前一个数据项。

   · moveFirst(): 指向第一个数据项。

   · moveLast(): 指向最后一个数据项。

   · EOF: 这个属性用来检测我们是否已经到达数据记录的底部。

  initTicker()首先检查是否有IE 4 。如果浏览器是IE4 ,这个XML文件被作为一个参数被传递并载入。如果定时器失败了,那么调用XMLDsoTicker()函数。XMLDsoTicker()除了XMLFile参数以外,和initTicker()有相同的参数,因为XML文件已经被载入。XMLDsoTicker()检查变量counter(初始值为maxMsgs)是否小于maxMsgs-1。如果是,moveNext()方法指向tickerSet中下一个数据项。

  HTML页面的BODY包含下面的代码:

<a href="" datasrc="#ticker" datafld="URL" class="tickerStyle">
<span datasrc="#ticker" datafld="message"></span>
</a>

图1:定时器应用程序显示输出。

  在这段代码中,<A>标记把XML文件的URL作为它的datafld。<SPAN>标记把XML文件的信息作为它的datafld。这个信息在<SPAN>元素中显示,然后整个信息可以通过这段信息相应的URL连接。

  这样,<A>和<SPAN>元素包含下一个数据项(URL和信息)。在一段延迟以后,<A>和<SPAN>指向下一个数据。只要counter<maxMsgs-1(计数器每次递增),这个操作就会发生。如果counter<maxMsgs-1是假,计数器就被设置为0,然后指向tickerSet中的第一个数据项。

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值