`
Forestsai
  • 浏览: 19474 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

阅读更多

Web设计中如何使用XML数据源对象
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是很合适的。

开始

   为了初始化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>,<DIV>等等提取的。代码列表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中的代码使用<TABLE>标记提取所有的实例:

   输出将是:
Name         Sex
Premshree Pillai         male
Vinod         male

   在代码列表2中,<TABLE>标记使用<TD>标记内的<DIV>标记提取数据。表格将自动重复<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>

<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 myXML。添加宽度和高度属性到<OBJECT>标记中,然后设置它们的值为0。这保证XML-DSO对象不会占据你的Web页面的任何空间。

  其次,使用datasrc创建一个象myXML一样的表--类似于代码列表2中一样。代码使用<DIV>标记(在TD标记之)提取数据,使用 datafld作为第一栏的信息,并且使用URL作为第二栏。添加<SCRIPT>标记,因为在这里,外部的XML使用Java脚本显式地声明你想要加载的XML文件。

   设置变量xmlDso为myXML.XMLDocument。myXML引用你已经创建的对象。接下来,使用XML-DSO的load()方法加载example3.xml。文件example3.xml连接到对象myXML上。
<!-- example3.xml -->
<?xml version="1.0" ?>
<ticker>
<item>
<message>JavaScript Ticker using XML DSO</message>
<URL>[url]http://someURL.com[/url]</URL>
</item>
</ticker>

   现在,研究一下下面的HTML页面:

<!-- example3.htm -->
<html>
<head>
<title>XML DSO-example3.htm</title>
<script language="JavaScript">
function load() {
var xmlDso=myXML.XMLDocument;
xmlDso.load("example3.xml");
}
</script>
</head>
<body bgcolor="#FFFFFF" onLoad="load()">

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

<table datasrc="#myXML" 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 [url]http://someURL.com[/url]

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

<script language="JavaScript">
var xmlDso;
function load(xmlFile, objName) {
eval('xmlDso='+objName+'.XMLDocument');
xmlDso.load(xmlFile);
}
</script>
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>
<script language="JavaScript">
function load() {
var xmlDso=myDB.XMLDocument;
xmlDso.load("example4.xml");

/* Get the complete record set */
var memberSet=myDB.recordset;

/* Go to next data */
memberSet.moveNext();
}
</script>
</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>
<script language="JavaScript">
function load() {
var xmlDso=myDB.XMLDocument;
xmlDso.load("example4.xml");

/* Get the complete record set */
var memberSet=myDB.recordset;

/* Go to next data */
memberSet.moveNext();
}
</script>
</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中的第一个数据项。

 

分享到:
评论

相关推荐

    Web设计中如何使用XML数据

    XML数据源对象DSO是一个微软ActiveX控件,构建在微软IE4以后的版本上。这个对象允许你把一个外部的XML文件或者嵌入HTML文件中的内容提取到HTML页面中。你可以在一个Web页面中使用XML - DSO从一个外部XML文件中选取...

    XML的数据源对象(数据岛)

    Web服务器与客户机之间的数据传递方式有三种:HTML页面,XML文档以及XML数据岛。采用数据岛作为交互手段,不仅可以使数据具备一定的语义信息,还能保持HTML的原有特色

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    8.4 jdbc数据源和连接池 299 8.5 mysql对中文的处理 302 8.6 小结 302 第9章 会话跟踪 303 9.1 用于会话跟踪的技术 303 9.1.1 ssl会话 304 9.1.2 cookies 304 9.1.3 url重写 305 9.2 java servlet api的会话...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    8.4 jdbc数据源和连接池 299 8.5 mysql对中文的处理 302 8.6 小结 302 第9章 会话跟踪 303 9.1 用于会话跟踪的技术 303 9.1.1 ssl会话 304 9.1.2 cookies 304 9.1.3 url重写 305 9.2 java servlet api的会话...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    8.4 jdbc数据源和连接池 299 8.5 mysql对中文的处理 302 8.6 小结 302 第9章 会话跟踪 303 9.1 用于会话跟踪的技术 303 9.1.1 ssl会话 304 9.1.2 cookies 304 9.1.3 url重写 305 9.2 java servlet api的会话...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    8.4 jdbc数据源和连接池 299 8.5 mysql对中文的处理 302 8.6 小结 302 第9章 会话跟踪 303 9.1 用于会话跟踪的技术 303 9.1.1 ssl会话 304 9.1.2 cookies 304 9.1.3 url重写 305 9.2 java servlet api的会话...

    xml字符串转化Dataset

    用C#编程实现显示XML文件中信息的方法是使用.NET提供的标准类把XML文件内容读入一个StreamReader类对象中,再用XmlDatadocument类的DataSet读XML的方法去读XML信息到DataSet中,DataSet再以DataView的方式赋给一个Web...

    XML高级编程pdf

    12.2.2 在电子商务中使用XML的感受 12.3 展望未来 12.3.1 发现和调解 12.3.2 容器 12.3.3 代理 12.3.4 模板 12.4 理论转化为实现 12.5 电子商务解决方案 12.6 行业方案 12.6.1 纵向行业解决方案的关键 ...

    asp.net程序设计使用教程课件ppt

    9.2 ObjectDataSource数据源的使用 9.3 数据绑定的基本知识 9.4 DataList控件的常用属性、方法和模板的使用 9.5 Repeater控件的模板使用方法 9.6 GridView控件的常用属性、方法和数据绑定技术 9.7 DetailsView控件的...

    电子书-《XML实用教程》高清晰PDF Part1(共2Parts)

    本书是学习和应用XML 语言的实用教材,书中阐述了XML 的基本概念、语法规则、文档类型定义(DTD)、Schema 结构、层叠样式单(CSS)、数据源对象(DSO)、文件转换(XSLT)、文档对象模型(DOM),还介绍了在Java、ASP 和.NET ...

    xml入门经典-part3(中文版)

    1.3.2 XML下的Web体系结构 1.4 XML基本特征 1.5 词汇表 1.5.1 科学词汇表 1.5.2 商业词汇表 1.5.3 法律词汇表 1.5.4 医学词汇表 1.5.5 计算机词汇表 1.6 XML技术的主要特性 1.6.1 格式正规的XML 1.6.2 ...

    SM.WebApi.CMB2.zip

    当在URI或请求正文中使用查询字符串数据源时,最新的Web API 2和ASP.NET MVC 5仅支持传递仅包含原始、非类或System.String类型属性的简单对象。对于任何包含嵌套对象或集合的复杂对象,唯一可用的选择是在请求正文中...

    XML 高级编程(高清版)

    12.2.2 在电子商务中使用XML的感受 12.3 展望未来 12.3.1 发现和调解 12.3.2 容器 12.3.3 代理 12.3.4 模板 12.4 理论转化为实现 12.5 电子商务解决方案 12.6 行业方案 12.6.1 纵向行业解决方案的关键 ...

    XML高级编程 (Extensible Markup Language)

    12.2.2 在电子商务中使用XML的感受 12.3 展望未来 12.3.1 发现和调解 12.3.2 容器 12.3.3 代理 12.3.4 模板 12.4 理论转化为实现 12.5 电子商务解决方案 12.6 行业方案 12.6.1 纵向行业解决方案的关键 ...

    XML高级编程

    12.2.2 在电子商务中使用XML的感受 512 12.3 展望未来 513 12.3.1 发现和调解 514 12.3.2 容器 517 12.3.3 代理 519 12.3.4 模板 520 12.4 理论转化为实现 521 12.5 电子商务解决方案 521 12.6 行业方案 521 12.6.1 ...

    Web系统与技术 课程教材

    8.4.8 ASP.Net的数据源控件对象... 306 8.4.9 ASP.Net的数据绑定控件对象... 312 8.5 ASP的Web 服务编程... 316 8.5.1 Web服务的创建与发布... 316 8.5.2 Web服务的使用... 319 8.6 习题... 321 第9章 XML编程...

    ado[1].net中文手册 学习 ado.net的重要资料

    从 XML Web services 使用 DataSet:提供一个 XML Web services 的示例,该示例以 DataSet 的形式返回数据源中的数据,另外还接收更新的 DataSet 并将更改解析回数据源。 查询结果分页:提供有关以数据页的形式查看...

    ASP.NET4高级程序设计(第4版) 3/3

    11.6.4 在异步任务中使用缓存 395 11.6.5 多异步任务和超时 397 11.7 总结 399 第12章 文件和流 400 12.1 使用文件系统 400 12.1.1 Directory类和File类 400 12.1.2 DirectoryInfo类和FileInfo类 402...

    ADO.NET 2.0技术内幕(高清 中文 带书签 全)

    本书重要主题:在Microsoft Visual Studio 2005中使用设计时数据访问特性;使用Microsoft .NET Framework 2.0数据提供程序连接数据库;构建连接字符串,启用连接池;执行查询,包括参数化查询和非同步查询,并获取...

Global site tag (gtag.js) - Google Analytics