﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-我的小船停在代码的海洋中...-随笔分类-XML</title><link>http://www2.blogjava.net/machilansing/category/14203.html</link><description>Lansing--Coding 不是梦
</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 20:19:19 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 20:19:19 GMT</pubDate><ttl>60</ttl><item><title>转：Web设计中如何使用XML数据源对象</title><link>http://www.blogjava.net/machilansing/archive/2006/08/16/WEB_AND_XML.html</link><dc:creator>Lansing</dc:creator><author>Lansing</author><pubDate>Wed, 16 Aug 2006 07:23:00 GMT</pubDate><guid>http://www.blogjava.net/machilansing/archive/2006/08/16/WEB_AND_XML.html</guid><wfw:comment>http://www.blogjava.net/machilansing/comments/63910.html</wfw:comment><comments>http://www.blogjava.net/machilansing/archive/2006/08/16/WEB_AND_XML.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/machilansing/comments/commentRss/63910.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/machilansing/services/trackbacks/63910.html</trackback:ping><description><![CDATA[
		<p>
				<strong>XML数据源对象是一个ActiveX控件，允许你在XML文件和HTML页面之间操作数据。本文将向你展示如何从各种XML数据源中提取数据，以及如何使用JavaScript显示这些数据。  </strong>
		</p>
		<p>　　XML数据源对象DSO是一个微软ActiveX控件，构建在微软IE4以后的版本上。这个对象允许你把一个外部的XML文件或者嵌入HTML文件中的内容提取到HTML页面中。 </p>
		<p>　　你可以在一个Web页面中使用XML - DSO从一个外部XML文件中选取内容，从嵌入Web页面的XML中提取XML数据，然后使用JavaScript操作这些数据。然而，并不建议在Internet中使用这个对象，因为DSO只能工作在MSIE 4以上的浏览器中，因此这可能会带来一些兼容性问题。 所以，在企业内部网使用XML-DSO是很合适的。 </p>
		<p>
				<font size="4">　　开始</font>
		</p>
		<p>　　为了初始化XML - DSO对象，我们使用＜OBJECT＞标记。 用于XML-DSO的CLASSID是：</p>
		<p>　　　　CLSID:550dda30-0541-11d2-9ca9-0060b0ec3d39</p>
		<p>　　这ID唯一标识XML-DSO。使用下面的代码在一个Web页面中初始化这个控件： </p>
		<p>　　＜OBJECT ID="SomeID" CLASSID="CLSID:550dda30-0541-11d2-9ca9-0060b0ec3d39"＞＜/OBJECT＞</p>
		<p>　　虽然大部分对象需要许多参数与之相关联，但是XML-DSO不需要任何参数。 </p>
		<p>
				<font size="4">　　使用一个XML数据岛析取数据</font>
		</p>
		<p>　　首先，通过使用＜XML＞标记包含一个XML数据岛。其次，给它分配一个ID，xmldb --以备以后使用。 数据实际上是使用HTML标记：＜ALT＞，＜SPAN＞，＜DIV＞等等提取的。代码列表1中的代码使用了＜SPAN＞标记。datasrc属性指定了你想从中提取数据的那个数据岛。datafld属性指定了你想要的数据的XML标记。所以，第一个＜SPAN＞提取名称，而第二＜SPAN＞提取性别。 </p>
		<p>　　代码列表1：</p>
		<p>＜!-- example1.htm --＞<br />＜html＞<br />＜head＞<br />＜title＞XML DSO-example1.htm＜/title＞<br />＜/head＞<br />＜body bgcolor="#FFFFFF"＞<br />＜xml id="xmldb"＞<br />＜db＞<br />＜member＞<br />＜name＞Premshree Pillai＜name＞<br />＜sex＞male＜/sex＞<br />＜/member＞<br />＜member＞<br />＜name＞Vinod＜/name＞<br />＜sex＞male＜/sex＞<br />＜/member＞<br />＜/db＞<br />＜/xml＞</p>
		<p>＜span datasrc="#xmldb" datafld="name"＜＜/span＞<br />＜br＞<br />＜span datasrc="#xmldb" datafld="sex"＞＜/span＞</p>
		<p>＜/body＞<br />＜/html＞  </p>
		<p>　　注意这段代码没有初始化一个XML-DSO对象。这是因为XML数据岛的使用中已经隐式地创建了一个。输出应为： <br />　　<br />　　Premshree Pillai<br />　　male</p>
		<p>　　注意在XML数据岛中有两个＜name＞和＜sex＞标记。使用这个方法，你只能提取这些标记中的第一个实例。代码列表2中的代码使用＜TABLE＞标记提取所有的实例： </p>
		<p>　　输出将是: <br />　　　 <br />     Name     Sex <br />     -----------------------------------<br />     Premshree Pillai  male <br />     Vinod      male </p>
		<p>　　在代码列表2中，＜TABLE＞标记使用＜TD＞标记内的＜DIV＞标记提取数据。表格将自动重复＜member＞（＜name＞和＜sex＞的母标记）的每个实例。 </p>
		<p>　　代码列表2：</p>
		<p>
				<br />＜!-- example2.htm --＞<br />＜html＞<br />＜head＞<br />＜title＞XML DSO-example2.htm＜/title＞<br />＜/head＞<br />＜body bgcolor="#FFFFFF"＞</p>
		<p>＜xml id="xmldb"＞<br />＜db＞<br />＜member＞<br />＜name＞Premshree Pillai＜name＞<br />＜sex＞male＜/sex＞<br />＜/member＞<br />＜member＞<br />＜name＞Vinod＜/name＞<br />＜sex＞male＜/sex＞<br />＜/member＞<br />＜/db＞<br />＜/xml＞</p>
		<p>＜table datasrc="#xmldb" border="1"＞<br />＜thead＞<br />＜th＞Name＜/th＞<br />＜th＞Sex＜/th＞<br />＜/thead＞<br />＜tr＞<br />＜td＞＜div datafld="name"＞＜/div＞＜/td＞<br />＜td＞＜div datafld="sex"＞＜/div＞＜/td＞<br />＜/tr＞<br />＜/table＞<br />＜/body＞<br />＜/html＞</p>
		<p>
				<font size="4">使用外部XML文件提取数据</font>
		</p>
		<p>　　为了使用XML-DSO加载一个外部XML文件，你必须显式的包含这个对象并且使用一些JavaScript。 </p>
		<p>　　首先创建一个XML-DSO对象，使用ID myXML。添加宽度和高度属性到＜OBJECT＞标记中，然后设置它们的值为0。这保证XML-DSO对象不会占据你的Web页面的任何空间。 </p>
		<p>　　其次，使用datasrc创建一个象myXML一样的表--类似于代码列表2中一样。代码使用＜DIV＞标记（在TD标记之）提取数据，使用datafld作为第一栏的信息，并且使用URL作为第二栏。添加＜SCRIPT＞标记，因为在这里，外部的XML使用Java脚本显式地声明你想要加载的XML文件。 </p>
		<p>　　设置变量xmlDso为myXML.XMLDocument。myXML引用你已经创建的对象。接下来，使用XML-DSO的load()方法加载example3.xml。文件example3.xml连接到对象myXML上。 </p>
		<p>
				<br />＜!-- example3.xml --＞<br />＜?xml version="1.0" ?＞<br />＜ticker＞<br />＜item＞<br />＜message＞JavaScript Ticker using XML DSO＜/message＞<br />＜URL＞<a class="contentlink" href="http://someurl.com/" target="_blank"><font color="#4455aa">http://someURL.com</font></a>＜/URL＞<br />＜/item＞<br />＜/ticker＞ </p>
		<p>　　现在，研究一下下面的HTML页面: </p>
		<p>
				<br />＜!-- example3.htm --＞<br />＜html＞<br />＜head＞<br />＜title＞XML DSO-example3.htm＜/title＞<br />＜script language="JavaScript"＞<br />function load() {<br />var xmlDso=myXML.XMLDocument;<br />xmlDso.load("example3.xml");<br />}<br />＜/script＞<br />＜/head＞<br />＜body bgcolor="#FFFFFF" onLoad="load()"＞</p>
		<p>＜object id="myXML" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" <br />width="0" height="0"＞＜/object＞</p>
		<p>＜table datasrc="#myXML" border="1"＞<br />＜thead＞<br />＜th＞Message＜/th＞<br />＜th＞URL＜/th＞<br />＜/thead＞<br />＜tr＞<br />＜td＞＜div datafld="message"＞＜/div＞＜/td＞<br />＜td＞＜div datafld="URL"＞＜/div＞＜/td＞<br />＜/tr＞<br />＜/table＞</p>
		<p>＜/body＞<br />＜/html＞ </p>
		<p>　　输出应是: </p>
		<p>　　　Message URL<br />　　　JavaScript Ticker using XML DSO <a class="contentlink" href="http://someurl.com/" target="_blank"><font color="#4455aa">http://someURL.com</font></a></p>
		<p>　　上面的脚本非常特殊化。下面给出一个更一般的脚本： </p>
		<p>
				<br />＜script language="JavaScript"＞<br />var xmlDso;<br />function load(xmlFile, objName) {<br />eval('xmlDso='+objName+'.XMLDocument');<br />xmlDso.load(xmlFile);<br />}<br />＜/script＞<br />Now, to load any XML file use: <br />load("SomeXMLFile.xml","anyXmlDsoObject");</p>
		<p>
				<font size="4">使用XML-DSO和JavaScript</font>
		</p>
		<p>　　假设你有一个包含姓名、电子邮件地址和电话号码的XML文件。你想使用它构建一个应用程序，显示每个人的档案--一次显示一个。用户将使用"Next"和"Previous"按钮浏览每个人的数据。Javascript可以帮助你实现这个目的。 </p>
		<p>　　下面的代码使用记录集方法把文件中所有的数据保存到一个变量memberSet中。moveNext()方法指向下一个数据项（下一行）。脚本然后载入XML文件example4.xml，把记录保存到变量memberSet中。第一个记录将被显示，但是memberSet.moveNext()指向文件中相对于前一个指定数据的下一个记录。 </p>
		<p>
				<br />＜!-- example4.xml --＞<br />＜?xml version="1.0" ?＞<br />＜myDB＞<br />＜member＞<br />＜name＞Premshree Pillai＜/name＞<br />＜sex＞male＜/sex＞<br />＜/member＞<br />＜member＞<br />＜name＞Vinod＜/name＞<br />＜sex＞male＜/sex＞<br />＜/member＞<br />＜member＞<br />＜name＞Santhosh＜/name＞<br />＜sex＞male＜/sex＞<br />＜/member＞<br />＜/myDB＞ </p>
		<p>　　这里是相应的HTML文件： </p>
		<p>
				<br />＜!-- example4.htm --＞<br />＜html＞<br />＜head＞<br />＜title＞XML DSO-example4.htm＜/title＞<br />＜script language="JavaScript"＞<br />function load() {<br />var xmlDso=myDB.XMLDocument;<br />xmlDso.load("example4.xml");</p>
		<p>/* Get the complete record set */<br />var memberSet=myDB.recordset;</p>
		<p>/* Go to next data */<br />memberSet.moveNext();<br />}<br />＜/script＞<br />＜/head＞<br />＜body bgcolor="#FFFFFF" onLoad="load()"＞</p>
		<p>＜object id="myDB" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" <br />width="0" height="0"＞＜/object＞</p>
		<p>＜span datasrc="#myDB" datafld="name"＞＜/span＞</p>
		<p>＜/body＞<br />＜/html＞ </p>
		<p>　　输出应是: </p>
		<p>　　　Vinod</p>
		<p>　　下面给出更多使用JavaScript操作XML-DSO的方法： </p>
		<p>　　　· movePrevious(): 指向前一个数据项。 </p>
		<p>　　　· moveFirst(): 指向第一个数据项。 </p>
		<p>　　　· moveLast(): 指向最后一个数据项。 </p>
		<p>　　　· EOF: 这个属性用来检测我们是否已经到达数据记录的底部。<br /><font size="4">使用XML-DSO和JavaScript</font></p>
		<p>　　假设你有一个包含姓名、电子邮件地址和电话号码的XML文件。你想使用它构建一个应用程序，显示每个人的档案--一次显示一个。用户将使用"Next"和"Previous"按钮浏览每个人的数据。Javascript可以帮助你实现这个目的。 </p>
		<p>　　下面的代码使用记录集方法把文件中所有的数据保存到一个变量memberSet中。moveNext()方法指向下一个数据项（下一行）。脚本然后载入XML文件example4.xml，把记录保存到变量memberSet中。第一个记录将被显示，但是memberSet.moveNext()指向文件中相对于前一个指定数据的下一个记录。 </p>
		<p>
				<br />＜!-- example4.xml --＞<br />＜?xml version="1.0" ?＞<br />＜myDB＞<br />＜member＞<br />＜name＞Premshree Pillai＜/name＞<br />＜sex＞male＜/sex＞<br />＜/member＞<br />＜member＞<br />＜name＞Vinod＜/name＞<br />＜sex＞male＜/sex＞<br />＜/member＞<br />＜member＞<br />＜name＞Santhosh＜/name＞<br />＜sex＞male＜/sex＞<br />＜/member＞<br />＜/myDB＞  </p>
		<p>　　这里是相应的HTML文件： </p>
		<p>
				<br />＜!-- example4.htm --＞<br />＜html＞<br />＜head＞<br />＜title＞XML DSO-example4.htm＜/title＞<br />＜script language="JavaScript"＞<br />function load() {<br />var xmlDso=myDB.XMLDocument;<br />xmlDso.load("example4.xml");</p>
		<p>/* Get the complete record set */<br />var memberSet=myDB.recordset;</p>
		<p>/* Go to next data */<br />memberSet.moveNext();<br />}<br />＜/script＞<br />＜/head＞<br />＜body bgcolor="#FFFFFF" onLoad="load()"＞</p>
		<p>＜object id="myDB" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" <br />width="0" height="0"＞＜/object＞</p>
		<p>＜span datasrc="#myDB" datafld="name"＞＜/span＞</p>
		<p>＜/body＞<br />＜/html＞ </p>
		<p>　　输出应是: </p>
		<p>　　　Vinod</p>
		<p>　　下面给出更多使用JavaScript操作XML-DSO的方法： </p>
		<p>　　　· movePrevious(): 指向前一个数据项。 </p>
		<p>　　　· moveFirst(): 指向第一个数据项。 </p>
		<p>　　　· moveLast(): 指向最后一个数据项。 </p>
		<p>　　　· EOF: 这个属性用来检测我们是否已经到达数据记录的底部。 </p>
		<p>　　initTicker()首先检查是否有IE 4+。如果浏览器是IE4+，这个XML文件被作为一个参数被传递并载入。如果定时器失败了，那么调用xmlDsoTicker()函数。xmlDsoTicker()除了xmlFile参数以外，和initTicker()有相同的参数，因为XML文件已经被载入。xmlDsoTicker()检查变量counter（初始值为maxMsgs）是否小于maxMsgs-1。如果是，moveNext()方法指向tickerSet中下一个数据项。 </p>
		<p>　　HTML页面的BODY包含下面的代码： </p>
		<p>
				<br />＜a href="" datasrc="#ticker" datafld="URL" class="tickerStyle"＞<br />＜span datasrc="#ticker" datafld="message"＞＜/span＞<br />＜/a＞ </p>
<img src ="http://www.blogjava.net/machilansing/aggbug/63910.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/machilansing/" target="_blank">Lansing</a> 2006-08-16 15:23 <a href="http://www.blogjava.net/machilansing/archive/2006/08/16/WEB_AND_XML.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用XML的五种场合</title><link>http://www.blogjava.net/machilansing/archive/2006/08/16/XML.html</link><dc:creator>Lansing</dc:creator><author>Lansing</author><pubDate>Wed, 16 Aug 2006 07:19:00 GMT</pubDate><guid>http://www.blogjava.net/machilansing/archive/2006/08/16/XML.html</guid><wfw:comment>http://www.blogjava.net/machilansing/comments/63909.html</wfw:comment><comments>http://www.blogjava.net/machilansing/archive/2006/08/16/XML.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/machilansing/comments/commentRss/63909.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/machilansing/services/trackbacks/63909.html</trackback:ping><description><![CDATA[列出XML在应用中的五个最令人喜爱的用法。尽管这些并不能包含XML的所有潜在应用，至少是些最重要的领域。 <br />1、数据交换 <br />用XML在应用程序和公司之间作数据交换已不是什么秘密了，毫无疑问应被列为第一位。那么为什么XML在这个领域里的地位这么重要呢？原因就是XML使用元素和属性来描述数据。在数据传送过程中，XML始终保留了诸如父/子关系这样的数据结构。几个应用程序可以共享和解析同一个XML文件，不必使用传统的字符串解析或拆解过程。相反，普通文件不对每个数据段做描述(除了在头文件中)，也不保留数据关系结构。使 用XML做数据交换可以使应用程序更具有弹性，因为可以用位置(与普通文件一样)或用元素名(从数据库)来存取XML数据。 <br />2、Web服务 <br />Web服务是最令人激动的革命之一，它让使用不同系统和不同编程语言的人们能够相互交流和分享数据。其基础在于Web服务器用XML在系统之间交换数据。交换数据通常用XML标记，能使协议取得规范一致，比如在简单对象处理协议(Simple Object Access Protocol, SOAP)平台上。SOAP可以在用不同编程语言构造的对象之间传递消息。这意味着一个C#对象能够与一个Java对象进行通讯。这种通讯甚至可以发生在运行于不同操作系统上的对象之间。DCOM, CORBA或Java RMI只能在紧密耦合的对象之间传递消息，SOAP则可在松耦合对象之间传递消息。 <br />3、内容管理 <br />XML只用元素和属性来描述数据，而不提供数据的显示方法。这样，XML就提供了一个优秀的方法来标记独立于平台和语言的内容。使用象XSLT这样的语言能够轻易地将XML文件转换成各种格式文件，比如HTML, WML, PDF, flat file, EDI, 等等。XML具有的能够运行于不同系统平台之间和转换成不同格式目标文件的能力使得它成为内容管理应用系统中的优秀选择。  <br />4、Web集成 <br />现在有越来越多的设备也支持XML了。使得Web开发商可以在个人电子助理和浏览器之间用XML来传递数据。为什么将XML文本直接送进这样的设备去呢？这样作的目的是让用户更多地自己掌握数据显示方式，更能体验到实践的快乐。常规的客户/服务(C/S)方式为了获得数据排序或更换显示格式，必须向服务器发出申请；而XML则可以直接处理数据，不必经过向服务器申请查询-返回结果这样的双向“旅程”，同时在设备也不需要配制数据库。甚至还可以对设备上的XML文件进行修改并将结果返回给服务器。想像一下，一台具有互联网功能并支持XML的电冰箱将会给市场带来多么大的冲击吧。你从此不必早起去取牛奶了！ <br />5、配制 <br />许多应用都将配制数据存储在各种文件里，比如.INI文件。虽然这样的文件格式已经使用多年并一直很好用，但是XML还是以更为优秀的方式为应用程序标记配制数据。使用NET里的类，如XmlDocument和XmlTextReader，将配制数据标记为XML格式，能使其更具可读性，并能方便地集成到应用系统中去。使用XML配制文件的应用程序能够方便地处理所需数据，不用象其他应用那样要经过重新编译才能修改和维护应用系统。如前所述，这里提到的五种使用XML的途径不包括全部场合。<img src ="http://www.blogjava.net/machilansing/aggbug/63909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/machilansing/" target="_blank">Lansing</a> 2006-08-16 15:19 <a href="http://www.blogjava.net/machilansing/archive/2006/08/16/XML.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>