时间: 2021-07-31 作者:daque
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>之类给予的。代码列表第11国学的代码应用了<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>标记。应用这个本事,你只能给予那些标记中的第一个典型。代码列表第22国学的代码应用<table>标记给予十足的典型: 输出将是:
name
sex
premshree pillai
male
vinod
male
在代码列表第22国学,<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一致的表--普遍于代码列表第22国学一致。代码应用<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>http://someurl.com</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 http://someurl.com 上面的脚本特出特殊化。下面给出一个更一致的脚本: <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中的第一个数据项。