﻿<?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>IT博客-asfman-文章分类-xml</title><link>http://www.cnitblog.com/asfman/category/2489.html</link><description>有些事，我们明知道是错的，也要去坚持，因为不甘心；有些人，我们明知道是爱的，也要去放弃，因为没结局；有时候，我们明知道没路了，却还在前行，因为习惯了。</description><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 05:36:35 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 05:36:35 GMT</pubDate><ttl>60</ttl><item><title>create xml file</title><link>http://www.cnitblog.com/asfman/articles/34429.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Sat, 06 Oct 2007 07:55:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/34429.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/34429.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/34429.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/34429.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/34429.html</trackback:ping><description><![CDATA[&lt;%@ Language="Javascript" %&gt;<br>&lt;%<br>var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");<br>var root=xmlDoc.createElement("information");<br>xmlDoc.appendChild(root);<br>var iFrag=xmlDoc.createDocumentFragment();<br>for(var i=1;i&lt;=Request.Form.Count;i++)<br>{<br>&nbsp;if(Request.Form.Key(i)!="sub")<br>&nbsp;{<br>&nbsp; for(var j=1;j&lt;=Request.Form(i).Count;j++)<br>&nbsp; {<br>&nbsp;&nbsp; var field=xmlDoc.createElement("field");<br>&nbsp;&nbsp; var attID=xmlDoc.createAttribute("ID");<br>&nbsp;&nbsp; attID.text=Request.Form.Key(i);<br>&nbsp;&nbsp; field.setAttributeNode(attID);<br>&nbsp;&nbsp; var value=xmlDoc.createElement("value");<br>&nbsp;&nbsp; value.text=Request.Form(i)(j);<br>&nbsp;&nbsp; field.appendChild(value);<br>&nbsp;&nbsp; iFrag.appendChild(field);<br>&nbsp; }<br>&nbsp;}<br>}<br>root.appendChild(iFrag);<br>var p=xmlDoc.createProcessingInstruction("xml","version='1.0' encoding='gb2312'");<br>xmlDoc.insertBefore(p,root);<br>xmlDoc.save(Server.Mappath("information.xml"));<br>Response.Write("saved information.xml successfully!");<br>%&gt;
<img src ="http://www.cnitblog.com/asfman/aggbug/34429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2007-10-06 15:55 <a href="http://www.cnitblog.com/asfman/articles/34429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>xml transformNode xsl</title><link>http://www.cnitblog.com/asfman/articles/34256.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Sun, 30 Sep 2007 08:08:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/34256.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/34256.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/34256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/34256.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/34256.html</trackback:ping><description><![CDATA[xml:<br>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>&lt;?xml-stylesheet type="text/xsl" href="cd.xsl"?&gt;&nbsp; <br>&lt;catalog&gt;<br>&lt;CD&gt;<br>&lt;title&gt;listener to mom&lt;/title&gt;<br>&lt;artist&gt;asfman&lt;/artist&gt;<br>&lt;country&gt;China&lt;/country&gt;<br>&lt;year&gt;2007&lt;/year&gt;<br>&lt;/CD&gt;<br>&lt;/catalog&gt;<br><br>xsl:<br>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>&lt;xsl:stylesheet xmlns:xsl="<a href="http://www.w3.org/TR/WD-xsl">http://www.w3.org/TR/WD-xsl</a>"&gt; <br>&lt;xsl:template match="/"&gt;<br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;style&gt;<br>.tb{<br>border:1px solid red;<br>border-collapse:collapse;<br>}<br>.tb td,th{<br>line-height:25px;<br>border:1px solid red;<br>}<br>&lt;/style&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;table class="tb"&gt;<br>&lt;tr&gt;<br>&lt;th&gt;title&lt;/th&gt;<br>&lt;th&gt;artist&lt;/th&gt;<br>&lt;th&gt;country&lt;/th&gt;<br>&lt;th&gt;year&lt;/th&gt;<br>&lt;/tr&gt;<br>&lt;xsl:for-each select="catalog/CD"&gt;<br>&lt;tr&gt;<br>&lt;td&gt;&lt;xsl:value-of select="title" /&gt;&lt;/td&gt;<br>&lt;td&gt;&lt;xsl:value-of select="artist" /&gt;&lt;/td&gt;<br>&lt;td&gt;&lt;xsl:value-of select="country" /&gt;&lt;/td&gt;<br>&lt;td&gt;&lt;xsl:value-of select="year" /&gt;&lt;/td&gt;<br>&lt;/tr&gt;<br>&lt;/xsl:for-each&gt;<br>&lt;/table&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br>&lt;/xsl:template&gt;<br>&lt;/xsl:stylesheet&gt;<br><br>asp:<br>&lt;%@ Language="Javascript" %&gt;<br>&lt;%<br>var xmlDom=Server.CreateObject("Microsoft.XMLDOM");<br>xmlDom.async=false;<br>xmlDom.load(Server.Mappath("cd.xml"));<br>var xslDom=Server.CreateObject("Microsoft.XMLDOM");<br>xslDom.async=false;<br>xslDom.load(Server.MapPath("cd.xsl"));<br>Response.Write(xmlDom.transformNode(xslDom));<br>%&gt;
<img src ="http://www.cnitblog.com/asfman/aggbug/34256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2007-09-30 16:08 <a href="http://www.cnitblog.com/asfman/articles/34256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>图片飘飘</title><link>http://www.cnitblog.com/asfman/articles/17765.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 09 Oct 2006 07:50:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/17765.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/17765.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/17765.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/17765.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/17765.html</trackback:ping><description><![CDATA[javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);<img src ="http://www.cnitblog.com/asfman/aggbug/17765.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2006-10-09 15:50 <a href="http://www.cnitblog.com/asfman/articles/17765.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> asp读取xml </title><link>http://www.cnitblog.com/asfman/articles/14865.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 07 Aug 2006 08:54:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/14865.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/14865.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/14865.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/14865.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/14865.html</trackback:ping><description><![CDATA[asp中创建xml对象通常使用:CreateObject("Microsoft.XMLDOM")<br />读取节点：selectSingleNode("nodename")//nodename为节点名。<br />读取属性：attributes.getNamedItem("attribute")//attribute为节点中所具有的属性名。<br />加载xml； load(Server.MapPath("data.xml")) <br />async 属性表示是否允许异步的下载。<br /><br /> <br />引用:<br />&lt;%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%&gt;<br />&lt;%Response.Charset="UTF-8"%&gt; <br />&lt;html&gt;<br />&lt;title&gt;read xml&lt;/title&gt;<br />&lt;body&gt;<br />&lt;%<br />dim node,i,nodecount<br />set Doc = CreateObject("Microsoft.XMLDOM")<br />Doc.async = false<br />Doc.load(Server.MapPath("data.xml")) <br />set root = Doc.documentElement<br />set nodeLis = root.childNodes<br />nodeCount = nodeLis.length<br />For i=1 to nodeCount <br />set node = nodeLis.nextNode()<br />set cost = node.attributes.getNamedItem("cost")<br />%&gt;<br />第 &lt;%=i%&gt; 条记录：<br />&lt;table border="1"&gt;<br />&lt;tr&gt; <br />&lt;td width="16" rowspan="2"&gt;&lt;img src="&lt;%=node.selectSingleNode("img").text%&gt;"/&gt;&lt;/td&gt;<br />&lt;td width="17"&gt;书名&lt;/td&gt;<br />&lt;td width="48"&gt;出版社&lt;/td&gt;<br />&lt;td width="32"&gt;价格&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt; <br />&lt;td&gt; <br />&lt;%=node.selectSingleNode("name").text%&gt;<br />&lt;/td&gt;<br />&lt;td&gt; <br />&lt;%=node.selectSingleNode("publisher").text%&gt;<br />&lt;/td&gt;<br />&lt;td&gt; <br />&lt;%= cost.text%&gt;<br />&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;/table&gt;<br />&lt;%<br />Next<br />%&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /><br /> <br /><br /><br />XML<br />  <br />引用:<br />&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;data&gt;<br />&lt;book cost="56"&gt;<br />&lt;name&gt;Dreamweaver&lt;/name&gt;<br />&lt;publisher&gt;上海科技出版社&lt;/publisher&gt;<br />&lt;img&gt;img/dw.jpg&lt;/img&gt;<br />&lt;/book&gt;<br />&lt;book cost="62"&gt;<br />&lt;name&gt;Flash&lt;/name&gt;<br />&lt;publisher&gt;铁道出版社&lt;/publisher&gt;<br />&lt;img&gt;img/flash.jpg&lt;/img&gt;<br />&lt;/book&gt;<br />&lt;book cost="48"&gt;<br />&lt;name&gt;Firweorks&lt;/name&gt;<br />&lt;publisher&gt;教育出版社&lt;/publisher&gt;<br />&lt;img&gt;img/fw.jpg&lt;/img&gt;<br />&lt;/book&gt;<br />&lt;/data&gt;<br /><img src ="http://www.cnitblog.com/asfman/aggbug/14865.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2006-08-07 16:54 <a href="http://www.cnitblog.com/asfman/articles/14865.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> XMLDOM对象方法：对象属性</title><link>http://www.cnitblog.com/asfman/articles/14863.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 07 Aug 2006 08:53:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/14863.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/14863.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/14863.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/14863.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/14863.html</trackback:ping><description><![CDATA[async 属性 <br /> 作   用<br />  async 属性表示是否允许异步的下载。 <br /> 基本语法<br />  boolValue ＝ XMLDocument.async;XMLDocument.async ＝ boolValue;<br /> <br />说   明<br />  布尔值是可擦写的（read/write），如果准许异步下载，值为True；反之则为False。<br /> <br />范   例<br /> xmlDoc.async ＝ "false";<br />alert(xmlDoc.async);<br /> <br />attribute 属性 <br /> 作   用<br />  传回目前节点的属性列表。 <br /> 基本语法<br />  objAttributeList = xmlNode.attributes;<br /> <br />说   明<br />  传回一个物件。如果此节点不能包含属性，则传回空值。<br /> <br />范   例<br /> objAttList ＝ xmlDoc.documentElement.attributes;<br />alert(objAttList);<br /> <br />childNodes 属性 <br /> 作   用<br />  传回一个节点清单，包含该节点所有可用的子节点。 <br /> 基本语法<br />  objNodeList=node.childNodes;<br /> <br />说   明<br />  传回一个物件。假如这节点没有子节点，传回null。<br /> <br />范   例<br /> objNodeList ＝ xmlDoc.childNodes;<br />alert(objNodeList);<br /> <br />doctype 属性 <br /> 作   用<br />  传回文件型态节点，包含目前文件的DTD。这节点是一般的文件型态宣告，例如，节点，名为EMAIL 的节点物件会被传回。 <br /> 基本语法<br />  objDocType=xmlDocument.doctype;<br /> <br />说   明<br />  传回一个对象，这个属性是只读的。假如这文件不包含DTD，会传回null。<br /> <br />范   例<br /> objDocType ＝ xmlDoc.doctype;<br />alert(objDocType.nodeName);<br /> <br />documentElement 属性 <br /> 作   用<br />  确认XML 文件的根（Root）节点。 <br /> 基本语法<br />  objDoc=xmlDocument.documentElement;<br /> <br />说   明<br />  回一个在单一根文件元素中包含数据的对象。此属性可读/写，如果文件中不包含根节点，将传回null。<br /> <br />范   例<br /> objDocRoot ＝ xmlDoc.documentElement;<br />alert(objDocRoot);<br /> <br />firstChild 属性 <br /> 作   用<br />  确认在目前节点中的第一个子元素。 <br /> 基本语法<br />  objFirstChild ＝ xmlDocNode.firstChild ;<br /> <br />说   明<br />  此属性只读且会传回一对象，如果节点中没有包含第一个子元素，将传回null。<br /> <br />范   例<br /> objFirstChild ＝ xmlDoc.documentElement.firstChild;<br />alert(objFirstChild);<br /> <br />implementation 属性 <br /> 作   用<br />  DOM 应用程序能使用其它实作中的对象。implementation 属性确认目前XML 文件的DOMimplementation 对象。 <br /> 基本语法<br />  objImplementation ＝ xmlDocument.implementation;<br /> <br />说   明<br />  此属性只读且传回一个对象。<br /> <br />范   例<br /> objImp ＝ xmlDoc.implementation;<br />alert(objImp);<br /> <br />lastChild 属性 <br /> 作   用<br />  确认目前节点中最后的子元素。 <br /> 基本语法<br />  objLastChild ＝ xmlDocNode.lastChild;<br /> <br />说   明<br />  此属性只读且传回一个对象。如果节点中没有包含最后子元素，将传回null。<br /> <br />范   例<br /> objLastChild ＝ xmlDoc.documentElement.lastChild;<br />alert(objLastChild);<br /> <br />nextSibling 属性 <br /> 作   用<br />  在目前文件节点的子节点列表中传回下一个兄弟节点。 <br /> 基本语法<br />  objNextSibling ＝ xmlDocNode.nextSibling;<br /> <br />说   明<br />  此属性是只读且传回一个对象。如果节点中没有包含其它的相关节点，会传回null。<br /> <br />范   例<br /> objSibling ＝ xmlDoc.documentElement.childNodes.item(1) .nextSibling;<br />alert(objSibling);<br /> <br />nodeName 属性 <br /> 作   用<br />  传回代表目前节点名称的字符串。 <br /> 基本语法<br />  strNodeName ＝ xmlDocNode.nodeName ;<br /> <br />说   明<br />  传回一个字符串。这个属性是只读的，传回元素名称、属性或实体参照。<br /> <br />范   例<br /> strNodeName ＝ xmlDoc.documentElement.nodeName;<br />alert(strNodeName);<br /> <br />nodeType 属性 <br /> 作   用<br />  辨识节点的DOM 型态。 <br /> 基本语法<br />  numNodeType ＝ xmlDocNode.nodeType ;<br /> <br />说   明<br />  <br />此属性只读且传回一个数值。<br /><br />有效的数值符合以下的型别：<br />1-ELEMENT<br />2-ATTRIBUTE<br />3-TEXT<br />4-CDATA<br />5-ENTITY REFERENCE<br />6-ENTITY<br />7-PI (processing instruction)<br />8-COMMENT<br />9-DOCUMENT<br />10-DOCUMENT TYPE<br />11-DOCUMENT FRAGMENT<br />12-NOTATION<br />　<br /> <br />范   例<br /> numNodeType ＝ xmlDoc.documentElement.nodeType;<br />alert(numNodeType);<br /> <br />nodeValue 属性 <br /> 作   用<br />  传回指定节点相关的文字。这并非一个元素中数据的值，而是与一个节点相关且未解析的文字，就像一个属性或者一个处理指令。 <br /> 基本语法<br />  varNodeValue ＝ xmlDocNode.nodeValue;<br /> <br />说   明<br />  传回的文字代表以节点的nodeType 属性为主的型态值。（请参考附录中的nodeType 属性。）因为节点型态可能是几种数据型态中的一种，传回值也因此有差异。传回null 的节点型态有：DOCUMENT、ELEMENT、DOCUMENT TYPE、DOCUMENT FRAGMENT、ENTITY、ENTITY REFERENCE，和NOTATION。此属性可擦写。<br /> <br />范   例<br /> varNodeValue ＝ xmlDoc.documentElement.nodeValue;<br />alert(varNodeValue);<br /> <br />ondataavailable 属性 <br /> 作   用<br />  指定一个事件来处理ondataavailable 事件。 <br /> 基本语法<br />  xmlDocNode.ondataavailable ＝ value;<br /> <br />说   明<br />  此属性是唯写，允许文件作者一旦数据为可用，即可尽快的使用数据来运作。<br /> <br />范   例<br /> xmlDoc.ondataavailable ＝ alert("Data is now available.");<br /> <br />onreadystatechange 属性 <br /> 作   用<br />  指定一个事件来处理onreadystatechange 事件。这个事件能辨识readyState 属性的改变。 <br /> 基本语法<br />  xmlDocNode.onreadystatechange ＝ value;<br /> <br />说   明<br />  此属性是唯写的，允许文件作者指定当readyState 属性改变时呼叫事件。<br /> <br />范   例<br /> xmlDoc.onreadystatechange ＝<br />alert("The readyState property has changed.");<br /> <br />ownerDocument 属性 <br /> 作   用<br />  传回文件的根节点，包含目前节点。 <br /> 基本语法<br />  objOwnerDoc ＝ xmlDocument.ownerDocument;<br /> <br />说   明<br />  此属性是只读的，传回一个包含文件根节点的对象，包含特定的节点。<br /> <br />范   例<br /> objOwnerDoc ＝ xmlDoc.childNodes.item(2).ownerDocument;<br />alert(objOwnerDoc);<br /> <br />parentNode 属性 <br /> 作   用<br />  传回目前节点的父节点。只能应用在有父节点的节点中。 <br /> 基本语法<br />  objParentNode ＝ xmlDocumentNode.parentNode;<br /> <br />说   明<br />  此属性是只读的，传回包含指定节点的父节点对象。如果此节点不存在于文件树中，将传回null。<br /> <br />范   例<br /> objParentNode ＝ xmlDoc.childNodes.item(1).parentNode;<br />alert(objParentNode);<br /> <br />parseError 属性 <br /> 作   用<br />  传回一个DOM 解析错误对象，此对象描述最后解析错误的讯息。 <br /> 基本语法<br />  objParseErr ＝ xmlDocument.parseError;<br /> <br />说   明<br />  此属性是只读的。如果没有错误发生，将传回0。<br /> <br />范   例<br /> objParseErr ＝ xmlDoc.parseError;<br />alert(objParseErr);<br /> <br />previousSibling 属性 <br /> 作   用<br />  传回目前节点之前的兄弟节点。 <br /> 基本语法<br />  objPrevSibling ＝ xmlDocument.previousSibling;<br /> <br />说   明<br />  传回一个对象，这个属性是只读的。若该节点没有包含前面的兄弟节点，会传回null。<br /> <br />范   例<br /> objPrevSibling ＝<br />xmlDoc.documentElement.childNodes.item(3).previousSibling<br />alert(objPrevSibling);<br /> <br />readyState 属性 <br /> 作   用<br />  传回XML 文件资料的目前状况。 <br /> 基本语法<br />  intState ＝ xmlDocument.readyState;<br /> <br />说   明<br /> <br /> 这个属性是只读的，传回值有以下的可能：<br /><br />0-UNINITIALIZED：XML 对象被产生，但没有任何文件被加载。<br />1-LOADING：加载程序进行中，但文件尚未开始解析。<br />2-LOADED：部分的文件已经加载且进行解析，但对象模型尚未生效。<br />3-INTERACTIVE：仅对已加载的部分文件有效，在此情况下，对象模型是有效但只读的。<br />4-COMPLETED：文件已完全加载，代表加载成功。<br />　<br /> <br />范   例<br /> alert("The readyState property is " + xmlDoc.readyState);<br /> <br />url 属性 <br /> 作   用<br />  传回最近一次加载XML 文件的URL。 <br /> 基本语法<br />  strDocUrl ＝ xmlDocument.url;<br /> <br />说   明<br />  这个属性是只读的，传回最近一次加载成功文件的URL，若文件仅存在主存储器中（表示该文件并非由外部档案加载)，则传回null。<br /> <br />范   例<br /> alert(xmlDoc.url);<br /> <br />validateOnParse 属性 <br /> 作   用<br />  告诉解析器文件是否有效。 <br /> 基本语法<br />  boolValidate ＝ xmlDocument.validateOnParse;<br /> xmlDocument.validateOnParse = boolValidate;<br /> <br />说   明<br />  此属性是可擦写的。如果传回值为true，表示文件被解析时被确认是有效的。如果传回false，表示文件是无效的，并被认为只是标准格式的（well-formed）文件。<br /> <br />范   例<br /> xmlDoc.validateOnParse ＝ true;<br />alert(xmlDoc.validateOnParse);<br /> <br />xml 属性 <br /> 作   用<br />  传回指定节点的XML 描述和所有的子节点。 <br /> 基本语法<br />  xmlValue ＝ xmlDocumentNode.xml;<br /> <br />说   明<br />  此属性是只读的。<br /> <br />范   例<br /> xmlValue ＝ xmlDoc.documentElement.xml;<br />alert(xmlValue);<br /> <img src ="http://www.cnitblog.com/asfman/aggbug/14863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2006-08-07 16:53 <a href="http://www.cnitblog.com/asfman/articles/14863.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用ASP和Microsoft.XMLDOM分析远程XML文件</title><link>http://www.cnitblog.com/asfman/articles/14864.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 07 Aug 2006 08:53:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/14864.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/14864.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/14864.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/14864.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/14864.html</trackback:ping><description><![CDATA[用xmldom方法打开xml文件，如果是本地的没有问题，就是用Server.MapPath("xml.xml")的方法，这时能正常分析出内容，但是直接用url却不显示出xml内容（在XMLDOM里表示是支持URL方式的），后来研究一下发现可以用XMLHTTP的方法获取XML后再分析，代码如下：<br /><br />Set http=Server.CreateObject("Microsoft.XMLHTTP")<br />http.Open "GET","<a href="http://localhost/xml.xml&quot;" target="_blank"><font color="#002c99">http://localhost/xml.xml"</font></a>,False<br />http.send<br /><br />Set xml=Server.CreateObject("Microsoft.XMLDOM")<br />xml.Async=False<br />xml.ValidateOnParse=False<br />xml.Load(http.ResponseXML)<br />If xml.ReadyState&gt;2 Then<br />        Response.Write("文档已经准备就绪。状态："&amp; xml.ReadyState &amp;"&lt;br&gt;")<br />        Set item=xml.getElementsByTagName("item")<br />        For i=0 To (item.Length-1)<br />        Set title=item.Item(i).getElementsByTagName("title")<br />        Set link=item.Item(i).getElementsByTagName("link")<br />        Response.Write("&lt;a href="""&amp; link.Item(0).Text &amp;"""&gt;"&amp; title.Item(0).Text &amp;"&lt;/a&gt;&lt;br&gt;")<br />        Next<br />Else<br />        Response.Write("文档还未准备就绪。状态："&amp; xml.ReadyState &amp;"&lt;br&gt;")<br />End If<br />Set http=Nothing<br />Set xml=Nothing<br /><br /><br />xml.xml文档的内容如下：<br /><br />&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;channel&gt;<br />&lt;item&gt;<br />  &lt;title&gt;测试文档1&lt;/title&gt;<br />  &lt;link&gt;<a href="http://localhost/&lt;/link&gt;" target="_blank"><font color="#002c99">http://localhost/&lt;/link&gt;</font></a><br />&lt;/item&gt;<br />&lt;item&gt;<br />  &lt;title&gt;测试文档2&lt;/title&gt;<br />  &lt;link&gt;<a href="http://localhostindex.asp&lt;/link&gt;" target="_blank"><font color="#002c99">http://localhostindex.asp&lt;/link&gt;</font></a><br />&lt;/item&gt;<br />&lt;/channel&gt;<br /><br /><img src ="http://www.cnitblog.com/asfman/aggbug/14864.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2006-08-07 16:53 <a href="http://www.cnitblog.com/asfman/articles/14864.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态排序</title><link>http://www.cnitblog.com/asfman/articles/9322.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Tue, 18 Apr 2006 08:25:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/9322.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/9322.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/9322.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/9322.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/9322.html</trackback:ping><description><![CDATA[
		<table class="tablebody2" style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" width="90%" border="0">
				<tbody>
						<tr>
								<td style="FONT-SIZE: 9pt; LINE-HEIGHT: 12pt" width="100%">
										<img alt="发贴心情" src="http://bbs.xml.org.cn/face/face1.gif" border="0" /> <b></b><br /><div width="100%"><div style="FLOAT: right"></div><div>现在数据岛被越来越广泛的应用；其中必然会涉及到的就是动态排序了；下面列出两种实现方法： 
<p></p><p>1、为&lt;xsl:param&gt;标签设定参数实现动态排序（推荐）<br />&lt;html&gt; <br />&lt;body&gt; <br />&lt;table DATASRC="#catalogs" border=1&gt; <br />&lt;thead&gt; <br />&lt;tr&gt; <br />&lt;td <i>onclick</i>="sort('TITLE','descending');"&gt;TITLE&lt;/td&gt; <br />&lt;td&gt;ARTIST&lt;/td&gt; <br />&lt;td <i>onclick</i>="sort('COUNTRY','ascending');"&gt;COUNTRY&lt;/td&gt; <br />&lt;td&gt;COMPANY&lt;/td&gt; <br />&lt;td&gt;PRICE&lt;/td&gt; <br />&lt;td&gt;YEAR&lt;/td&gt; <br />&lt;/tr&gt; <br />&lt;/thead&gt; <br />&lt;tbody&gt; <br />&lt;tr&gt; <br />&lt;td &gt;&lt;div DATAFLD="TITLE"&gt;&lt;/div&gt;&lt;/td&gt; <br />&lt;td &gt;&lt;div DATAFLD="ARTIST"&gt;&lt;/div&gt;&lt;/td&gt; <br />&lt;td &gt;&lt;div DATAFLD="COUNTRY"&gt;&lt;/div&gt;&lt;/td&gt; <br />&lt;td &gt;&lt;div DATAFLD="COMPANY"&gt;&lt;/div&gt;&lt;/td&gt; <br />&lt;td &gt;&lt;div DATAFLD="PRICE"&gt;&lt;/div&gt;&lt;/td&gt; <br />&lt;td &gt;&lt;div DATAFLD="YEAR"&gt;&lt;/div&gt;&lt;/td&gt; <br />&lt;/tr&gt; <br />&lt;/tbody&gt; <br />&lt;/table&gt; </p><p>&lt;xml id="catalogs"&gt; <br />&lt;CATALOG&gt; <br />&lt;CD&gt; <br />&lt;TITLE&gt;Empire Burlesque&lt;/TITLE&gt; <br />Bob Dylan <br />&lt;COUNTRY&gt;USA&lt;/COUNTRY&gt; <br />&lt;COMPANY&gt;Columbia&lt;/COMPANY&gt; <br />&lt;PRICE&gt;10.90&lt;/PRICE&gt; <br />&lt;YEAR&gt;1985&lt;/YEAR&gt; <br />&lt;/CD&gt; <br />&lt;CD&gt; <br />&lt;TITLE&gt;Burlesque&lt;/TITLE&gt; <br />Dylan <br />&lt;COUNTRY&gt;UA&lt;/COUNTRY&gt; <br />&lt;COMPANY&gt;umbia&lt;/COMPANY&gt; <br />&lt;PRICE&gt;1.90&lt;/PRICE&gt; <br />&lt;YEAR&gt;1987&lt;/YEAR&gt; <br />&lt;/CD&gt; <br />&lt;CD&gt; <br />&lt;TITLE&gt;Empire&lt;/TITLE&gt; <br />Bob <br />&lt;COUNTRY&gt;US&lt;/COUNTRY&gt; <br />&lt;COMPANY&gt;bia&lt;/COMPANY&gt; <br />&lt;PRICE&gt;12.90&lt;/PRICE&gt; <br />&lt;YEAR&gt;1995&lt;/YEAR&gt; <br />&lt;/CD&gt; <br />&lt;/CATALOG&gt; <br />&lt;/xml&gt; </p><p>&lt;xml id="xstyle"&gt; <br />&lt;xsl:stylesheet xmlns:xsl="<a class="contentlink" href="http://www.w3.org/1999/XSL/Transform&quot;" target="_blank"><font color="#4455aa">http://www.w3.org/1999/XSL/Transform"</font></a> version="1.0"&gt;<br />&lt;xsl:output method="xml"/&gt;<br />&lt;xsl:param name="sortorder" select="'descending'"/&gt;<br />&lt;xsl:param name="sortfield" select="'xxx'"/&gt;<br />&lt;xsl:template match="/"&gt;<br />&lt;CATALOG&gt; <br />&lt;xsl:for-each select="CATALOG/CD"&gt;<br />&lt;xsl:sort select="*[name()=$sortfield]" order="{$sortorder}" /&gt;<br />&lt;CD&gt;<br />&lt;TITLE&gt;&lt;xsl:<i>value</i>-of select="TITLE"/&gt;&lt;/TITLE&gt;<br />&lt;xsl:<i>value</i>-of select="ARTIST"/&gt;<br />&lt;COUNTRY&gt;&lt;xsl:<i>value</i>-of select="COUNTRY"/&gt;&lt;/COUNTRY&gt;<br />&lt;COMPANY&gt;&lt;xsl:<i>value</i>-of select="COMPANY"/&gt;&lt;/COMPANY&gt;<br />&lt;PRICE&gt;&lt;xsl:<i>value</i>-of select="PRICE"/&gt;&lt;/PRICE&gt;<br />&lt;YEAR&gt;&lt;xsl:<i>value</i>-of select="YEAR"/&gt;&lt;/YEAR&gt;<br />&lt;/CD&gt;<br />&lt;/xsl:for-each&gt; <br />&lt;/CATALOG&gt; <br />&lt;/xsl:template&gt;<br />&lt;/xsl:stylesheet&gt;<br />&lt;/xml&gt; </p><p>&lt;script language="vbscript"&gt;<br />function sort(strSortField, strSortOrder)</p><p>  dim objXSL, objXML, objTemplate, objProcessor, strHTML, strDrinkType<br /> <br />  Set objXML = CreateObject("Msxml2.FreeThreadedDOMDocument")<br />  Set objXSL = CreateObject("Msxml2.FreeThreadedDOMDocument")<br />  <br />  'Load the XML document<br />  objXML.async = False<br />  objXML.Loadxml catalogs.xml  <br />   <br />  'Load the XSL document<br />  objXSL.async = False<br />  objXSL.Loadxml xstyle.xml<br />      <br />  'Create an instance of our XSL Template object<br />  Set objTemplate = CreateObject("MSXML2.XSLTemplate")<br />      <br />  'Create an instance of our stylesheet object using our recently loaded XSLT document<br />  Set objTemplate.stylesheet = objXSL<br />       <br />  'Create an instance of our Processor object<br />  Set objProcessor = objTemplate.createProcessor</p><p>  'Define the input object for our object equal to our recently loaded XML document<br />  objProcessor.input = objXML</p><p>  'Now, finally we can add any parameters that we require to our Template processor<br />  objProcessor.AddParameter "sortfield", strSortField<br />  objProcessor.AddParameter "sortorder", strSortOrder<br />      <br />  'Last but not least we do our transformation<br />  objProcessor.Transform<br />      <br />  'Store the results of the output into a string.<br />  strXML = objProcessor.output</p><p>  'Load up an XML DOM object from the recent XML output<br />  objXML.loadxml strXML<br />  <br />  'Select only the "employees" elements from our document object<br />  objXML.selectNodes("//CATALOG")<br />  <br />  'Load our Data Island using our new XML object<br />  catalogs.loadxml  objXML.xml  <br /> end function  <br />&lt;/script&gt;</p><p>&lt;script language="<i>javascript</i>"&gt; <br />function sort2(xmlObj, xslObj, sortByColName) <br />{ <br />var xmlData=eval("document.all."+xmlObj).XMLDocument;<br />var xslData=eval("document.all."+xslObj).XMLDocument;<br />var nodes=xslData.documentElement.selectSingleNode("xsl:for-each"); <br />nodes.selectSingleNode("@order-by").<i>value</i>=sortByColName;</p><p>xmlData.documentElement.transformNodeToObject(xslData.documentElement,xmlData); <br />} <br />&lt;/script&gt; </p><p>&lt;/body&gt; <br />&lt;/html&gt;</p><p>2、直接通过DOM实现，灵活性欠缺：<br />&lt;html&gt; <br />&lt;body&gt; <br />&lt;table DATASRC="#catalogs" border=1&gt; <br />&lt;thead&gt; <br />&lt;tr&gt; <br />&lt;td <i>onclick</i>="sort('catalogs','xstyle','TITLE');"&gt;TITLE&lt;/td&gt; <br />&lt;td&gt;ARTIST&lt;/td&gt; <br />&lt;td&gt;COUNTRY&lt;/td&gt; <br />&lt;td&gt;COMPANY&lt;/td&gt; <br />&lt;td&gt;PRICE&lt;/td&gt; <br />&lt;td&gt;YEAR&lt;/td&gt; <br />&lt;/tr&gt; <br />&lt;/thead&gt; <br />&lt;tbody&gt; <br />&lt;tr&gt; <br />&lt;td &gt;&lt;div DATAFLD="TITLE"&gt;&lt;/div&gt;&lt;/td&gt; <br />&lt;td &gt;&lt;div DATAFLD="ARTIST"&gt;&lt;/div&gt;&lt;/td&gt; <br />&lt;td &gt;&lt;div DATAFLD="COUNTRY"&gt;&lt;/div&gt;&lt;/td&gt; <br />&lt;td &gt;&lt;div DATAFLD="COMPANY"&gt;&lt;/div&gt;&lt;/td&gt; <br />&lt;td &gt;&lt;div DATAFLD="PRICE"&gt;&lt;/div&gt;&lt;/td&gt; <br />&lt;td &gt;&lt;div DATAFLD="YEAR"&gt;&lt;/div&gt;&lt;/td&gt; <br />&lt;/tr&gt; <br />&lt;/tbody&gt; <br />&lt;/table&gt; </p><p>&lt;xml id='catalogs'&gt; <br />&lt;CATALOG&gt; <br />&lt;CD&gt; <br />&lt;TITLE&gt;Empire Burlesque&lt;/TITLE&gt; <br />Bob Dylan <br />&lt;COUNTRY&gt;USA&lt;/COUNTRY&gt; <br />&lt;COMPANY&gt;Columbia&lt;/COMPANY&gt; <br />&lt;PRICE&gt;10.90&lt;/PRICE&gt; <br />&lt;YEAR&gt;1985&lt;/YEAR&gt; <br />&lt;/CD&gt; <br />&lt;CD&gt; <br />&lt;TITLE&gt;Burlesque&lt;/TITLE&gt; <br />Dylan <br />&lt;COUNTRY&gt;UA&lt;/COUNTRY&gt; <br />&lt;COMPANY&gt;umbia&lt;/COMPANY&gt; <br />&lt;PRICE&gt;1.90&lt;/PRICE&gt; <br />&lt;YEAR&gt;1987&lt;/YEAR&gt; <br />&lt;/CD&gt; <br />&lt;CD&gt; <br />&lt;TITLE&gt;Empire&lt;/TITLE&gt; <br />Bob <br />&lt;COUNTRY&gt;US&lt;/COUNTRY&gt; <br />&lt;COMPANY&gt;bia&lt;/COMPANY&gt; <br />&lt;PRICE&gt;12.90&lt;/PRICE&gt; <br />&lt;YEAR&gt;1995&lt;/YEAR&gt; <br />&lt;/CD&gt; <br />&lt;/CATALOG&gt; <br />&lt;/xml&gt; </p><p>&lt;xml id="xstyle"&gt; <br />&lt;CATALOG&gt; <br />&lt;xsl:for-each select="CD" order-by="+TITLE" xmlns:xsl="<a class="contentlink" href="http://www.w3.org/TR/WD-xsl&quot;&gt;" target="_blank"><font color="#000050">http://www.w3.org/TR/WD-xsl"&gt;</font></a> <br />&lt;CD&gt; <br />&lt;TITLE&gt;&lt;xsl:<i>value</i>-of select="TITLE"/&gt;&lt;/TITLE&gt; <br />&lt;xsl:<i>value</i>-of select="ARTIST"/&gt; <br />&lt;COUNTRY&gt;&lt;xsl:<i>value</i>-of select="COUNTRY"/&gt;&lt;/COUNTRY&gt; <br />&lt;COMPANY&gt;&lt;xsl:<i>value</i>-of select="COMPANY"/&gt;&lt;/COMPANY&gt; <br />&lt;PRICE&gt;&lt;xsl:<i>value</i>-of select="PRICE"/&gt;&lt;/PRICE&gt; <br />&lt;YEAR&gt;&lt;xsl:<i>value</i>-of select="YEAR"/&gt;&lt;/YEAR&gt; <br />&lt;/CD&gt; <br />&lt;/xsl:for-each&gt; <br />&lt;/CATALOG&gt; <br />&lt;/xml&gt; </p><p>&lt;script language="<i>javascript</i>"&gt; <br />function sort(xmlObj, xslObj, sortByColName) <br />{ <br />var xmlData=eval("document.all."+xmlObj).XMLDocument;<br />var xslData=eval("document.all."+xslObj).XMLDocument;<br />var nodes=xslData.documentElement.selectSingleNode("xsl:for-each"); <br />nodes.selectSingleNode("@order-by").<i>value</i>=sortByColName;</p><p>xmlData.documentElement.transformNodeToObject(xslData.documentElement,xmlData); <br />} <br />&lt;/script&gt; <br />&lt;/body&gt; <br />&lt;/html&gt;</p><p></p></div></div></td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/asfman/aggbug/9322.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2006-04-18 16:25 <a href="http://www.cnitblog.com/asfman/articles/9322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML数据岛</title><link>http://www.cnitblog.com/asfman/articles/9303.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Tue, 18 Apr 2006 02:53:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/9303.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/9303.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/9303.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/9303.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/9303.html</trackback:ping><description><![CDATA[
		<h2 class="diaryTitle">XML数据岛 </h2>
		<b>关键词</b>： <a href="http://tag.bokee.com/tag/XML" target="_blank">XML</a>    <a href="http://tag.bokee.com/tag/%CA%FD%BE%DD%B5%BA" target="_blank">数据岛</a>                                           
<p>什么是XML数据岛? <br />数据岛是指存在于HTML页面中的XML代码。数据岛允许你在HTML页面中集成XML，对XML编 <br />写脚本，而不需要通过脚本或&lt;OBJECT&gt;标签读取XML。几乎所有能够存在于一个结构完整 <br />的XML文档中的东西都能存在于一个数据岛中。包括处理指示、DOCTYPE声明和内部子集 <br />。（注意，编码串不能放在数据岛中。) <br />&lt;XML&gt;元素标记数据岛的开始，它的ID属性提供了一个可以用来引用数据岛的名称。 <br />数据岛的XML可以是内嵌的： <br />&lt;XML ID="XMLID"&gt; <br />   &lt;customer&gt; <br />      &lt;name&gt;Herbert Hanley&lt;/name&gt; <br />      &lt;custID&gt;81422&lt;/custID&gt; <br />   &lt;/customer&gt;  
</p><p></p><p>&lt;/XML&gt; <br />或者在XML标签中通过SRC属性引用： <br />&lt;XML ID="XMLID" SRC="customer.xml"&gt;&lt;/XML&gt; <br />也可以使用&lt;SCRIPT&gt;标签来创建一个数据岛： <br /> &lt;SCRIPT LANGUAGE="xml" ID="XMLID"&gt; <br />  &lt;customer&gt; <br />    &lt;name&gt;Mark Hanson&lt;/name&gt; <br />    &lt;custID&gt;81422&lt;/custID&gt; <br />  &lt;/customer&gt; <br />&lt;/SCRIPT&gt; </p><img src ="http://www.cnitblog.com/asfman/aggbug/9303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2006-04-18 10:53 <a href="http://www.cnitblog.com/asfman/articles/9303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用XML数据岛结合Dom制作通讯录</title><link>http://www.cnitblog.com/asfman/articles/9304.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Tue, 18 Apr 2006 02:53:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/9304.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/9304.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/9304.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/9304.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/9304.html</trackback:ping><description><![CDATA[
		<h2 class="diaryTitle">用XML数据岛结合Dom制作通讯录</h2>
		<b>关键词</b>： <a href="http://tag.bokee.com/tag/XML" target="_blank">XML</a>    <a href="http://tag.bokee.com/tag/Dom" target="_blank">Dom</a>                                           
<p></p><p>一般情况下，如果要为网站提供一个通讯录程序，需要使用CGI结合后台数据库技术，这对WEB服务器的要求比较高，在很多不提供数据库功能的虚拟主机上甚至无法实现。当然，我们还可以采用TXT文本替代数据库，但TXT文本是比较难操作的，我们必须一行一行的读取判断，还要用分隔字符串实现字段分离，无法进行复杂运算。 <br />现在，我们可以使用“可扩展的标记语言 (XML)” 来保存通讯录的数据，从而体现出XML的优点：表现数据的结构化方法，对于保存许多关系型数据结构的文件很有帮助。 </p><p>一、基本原理： <br />在Microsoft Internet Explorer 5.0及以后的版本里，我们可以利用XML元素来创建数据岛，数据岛就是被HTML页面引用或包含的XML数据，XML数据可以包含在HTML文件内，也可以包含在某外部文件内，利用XML数据岛可以让我们免除编写复杂脚本的麻烦。DOM可对XML文档进行解析，文档中的元素、实体、属性等所有个体都可以用对象模型表示，整个文档的逻辑结构类似一棵树，生成的对象模型就是树的节点，每个对象同时包含了方法和属性，DOM提供了许多查找节点的方法。利用DOM，开发人员可以动态地创建XML、遍历文档、增加（删除/修改）文档内容，DOM提供的API与编程语言无关，所以对一些DOM标准中没有明确定义的接口，不同解析器的实现方法可能会有所差别。 </p><p>二、具体流程为： <br />１、定义XML文件如下所示： <br />　　&lt;?xml version="1.0" encoding="gb2312"?&gt; <br />　　　　&lt;中国计算机世界出版服务公司通信录&gt; <br />　　　　　　&lt;计算机世界 contactID="2"&gt; <br />　　　　　　　　&lt;部门名称&gt;计算机室&lt;/部门名称&gt; <br />　　　　　　　　&lt;电话号码&gt;139&lt;/电话号码&gt; <br />　　　　　　　　&lt;电子邮件&gt;fsdos@163.net&lt;/电子邮件&gt; <br />　　　　　　&lt;/计算机世界&gt; <br />　　　　&lt;/中国计算机世界出版服务公司通信录&gt; <br />将上述XML文档保存为tele.xml文件，同时，将上述XML文档中的字段内容置空，做为初始化框架数据，另存为newid.xml文件。 <br />２、客户端加载 XML 文档，在放置通讯录的表格中通过DATASRC='#xmldso'将XML文件绑定在表格中，DATASRC属性实际上是通过在要处理的XML元素的ID属性的前面加上#来实现的，所以我们可以在TD元素中间指定具体需要显示的字段； <br />３、使用DOM技术对通讯录进行增加、删除记录操作； <br />４、通过XMLHTTP协议连接到服务器，保存XML文档。 </p><p>三、XML DOM编程简述： <br />１、客户端dom.htm页面： <br />&lt;HTML&gt;&lt;BODY bgColor=#a1bae6&gt; <br />&lt;XML id=xmldso src="tele.xml"&gt;&lt;/XML&gt; <br />&lt;XML id=newid&gt;&lt;/XML&gt; &lt;!--加载xml数据--&gt; <br />&lt;SCRIPT Language=JavaScript&gt; <br />newid.async = false; <br />newid.load("newid.xml"); <br />//增加记录； <br />function addID(){ <br />var doc=xmldso.XMLDocument <br />var rootnode=doc.documentElement <br />var sortNode = rootnode.selectNodes("//部门名称") <br />var currentid = sortNode.length-1 <br />var cc=sortNode.item(currentid).text; <br />if ((cc=="尚未输入")||(cc=="")) <br />{ <br />alert("请将最后一行数据填写完毕后再增加新的记录！"); <br />} <br />else <br />{  <br />var node= newid.documentElement.childNodes(0).cloneNode(true); <br />var contactID=parseInt(sortNode.item(currentid).parentNode.getAttribute("contactID"))+1;  <br />node.setAttribute("contactID",contactID);  <br />xmldso.documentElement.appendChild(node); <br />} <br />} <br />//删除记录 <br />function delID(whichFld){ <br />var sortNode = xmldso.selectSingleNode("//计算机世界[@contactID='"+whichFld+"']"); <br />if (sortNode.parentNode.childNodes.length&gt;1) sortNode.parentNode.removeChild(sortNode);  <br />} <br />&lt;/SCRIPT&gt; <br />&lt;script language="vbscript"&gt; <br />Sub cc_onmouseup '保存记录； <br />Dim objXML, objXSL, objFSO,strFile, strFileName, strXSL,strURL,TheForm <br />set SaveXMLDoc=xmldso.XMLDocument <br />strURL="dns2.asp" <br />Set objXML = CreateObject("Microsoft.XMLHTTP") '创建MS的XMLHTTP组件； <br />objXML.Open "post",strURL,false '采用Post提交方式； <br />objXML.setrequestheader "content-type","application/x-www-form-urlencoded" <br />objXML.send SaveXMLDoc ' 发送信息，保存XML数据； <br />'xmlGet = objXML.responsebody '稍等片刻后，得到服务器端传回来的结果； <br />msgbox "保存成功！"  <br />Set objXML = Nothing <br />end sub  <br />&lt;/SCRIPT&gt; <br />&lt;center&gt;&lt;b&gt;计算机世界----通信录&lt;/b&gt;&lt;br&gt;&lt;br&gt; <br />&lt;TABLE id="table" DATASRC='#xmldso' BORDER CELLPADDING=3&gt; <br />&lt;!--进行数据绑定--&gt; <br />&lt;THEAD&gt;&lt;TH&gt;编号&lt;/TH&gt;&lt;TH&gt;部门名称&lt;/TH&gt;&lt;TH&gt;电话号码&lt;/TH&gt;&lt;TH&gt;电子邮件&lt;/TH&gt;&lt;/THEAD&gt; <br />&lt;TR&gt; <br />&lt;TD&gt;&lt;acronym title='点击即可删除该记录'&gt;&lt;INPUT TYPE=button size=4 DATAFLD="contactID" onclick="delID(this.value)"&gt;&lt;/acronym&gt;&lt;/TD&gt; <br />&lt;TD&gt;&lt;INPUT TYPE=TEXT DATAFLD="部门名称"&gt;&lt;/TD&gt; <br />&lt;TD&gt;&lt;INPUT TYPE=TEXT DATAFLD="电话号码"&gt;&lt;/TD&gt;  <br />&lt;TD&gt;&lt;INPUT TYPE=TEXT DATAFLD="电子邮件"&gt;&lt;/TD&gt; <br />&lt;/TR&gt; <br />&lt;/TABLE&gt; <br />&lt;INPUT TYPE=BUTTON name=dd id=dd VALUE="增加记录" onmouseover="this.focus()" onmousedown="addID();"&gt; <br />&lt;INPUT TYPE=BUTTON name=cc id=cc VALUE="保存"&gt;&lt;/center&gt;&lt;/BODY&gt;&lt;/HTML&gt; </p><p>２、服务器端dns2.asp程序比较简单，在接收到XML数据后，创建文件对象，保存到tele.xml即可： <br />&lt; <br />Set ReceivedDoc = CreateObject("Microsoft.XMLDOM") '创建 XML DOM实例； <br />ReceivedDoc.async=False <br />ReceivedDoc.load Request '接收XML数据； <br />Set files=Server.CreateObject("Scripting.FileSystemObject") <br />Set numtxt=files.CreateTextFile(Server.MapPath("tele.xml"),True) <br />numtxt.WriteLine(replace(ReceivedDoc.xml,"?&gt;"," encoding=""gb2312""?&gt;")) '将XML数据写入文件 <br />numtxt.Close <br />response.write ReceivedDoc.xml <br />&gt; </p><p>３、实际使用过程中，还需要增加一个显示通讯录的网页index.htm，其实就是上面dom.htm的简化版，去除所有增加、删除、修改和保存功能，只在表格单元格中用ＬＡＢＥＬ显示数据： <br />&lt;HTML&gt;&lt;BODY bgColor=#a1bae6&gt; <br />&lt;XML id=xmldso src="tele.xml"&gt;&lt;/XML&gt; <br />&lt;center&gt;&lt;b&gt;计算机世界----通信录&lt;/b&gt;&lt;br&gt;&lt;br&gt; <br />&lt;TABLE id="table" DATASRC='#xmldso' BORDER CELLPADDING=3&gt; <br />&lt;THEAD&gt;&lt;TH&gt;编号&lt;/TH&gt;&lt;TH&gt;部门名称&lt;/TH&gt;&lt;TH&gt;电话号码&lt;/TH&gt;&lt;TH&gt;电子邮件&lt;/TH&gt; <br />&lt;/THEAD&gt; <br />&lt;TR&gt; <br />&lt;TD&gt;&lt;label DATAFLD="contactID"&gt;&lt;/label&gt;&lt;/TD&gt; <br />&lt;TD&gt;&lt;label DATAFLD="部门名称"&gt;&lt;/label&gt;&lt;/TD&gt; <br />&lt;TD&gt;&lt;label DATAFLD="电话号码"&gt;&lt;/label&gt;&lt;/TD&gt;  <br />&lt;TD&gt;&lt;label DATAFLD="电子邮件"&gt;&lt;/label&gt;&lt;/TD&gt; <br />&lt;/TR&gt; <br />&lt;/TABLE&gt; <br />&lt;/center&gt;&lt;/BODY&gt;&lt;/HTML&gt; </p><p>四、使用XML数据岛结合Dom技术的优点： <br />１、首先，当然是XML本身带来的好处。XML打破了标记定义的垄断，你可以自定义字段名称，在本文所用的XML文件中，连字段名都可以为中文，数据非常地简单明晰，因为它所携带的信息不是显示上的描述，而是信息的语意，极大的加强了文档的可读性。使用XML也便于不同系统之间信息的传输。 <br />２、XML数据岛允许用户在客户端访问与操控数据集，不必频繁的与服务器交互，这对于减轻服务器的负荷很有帮助。同时，由于XML数据岛本身的特点，使得在客户端的数据操作十分简便，减少了编程量。 <br />３、DOM强制使用树模型来访问XML文档中的信息，由于XML本质上就是一种分层结构，所以这种描述方法是相当有效的。通过DOM接口，应用程序可以在任何时候访问XML文档中的任何一部分数据，控制起来相当灵活。 <br />４、采用xmlhttp对象传送XML数据到服务器，客户端页面无闪烁刷新现象。 </p><p>本程序在基于Windows2000平台的IIS5.0和IE5.0上运行通过。在实际运用过程中，还可使用DOM结合XSL技术为通讯录增加排序、格式转换和数据查找等功能，使用XML数据岛的datapagesize属性以及previousPage、nextPage函数为通讯录增加分页功能，使用DTD与XML Schema动态验证通讯录数据。 </p><p> </p><p>------------------------THE END---------------------- </p><p> </p><p><br />附：(全部源程序) <br />**************************************************************************** <br />一、index.htm（显示通讯录）: <br />&lt;HTML&gt;&lt;BODY bgColor=#a1bae6&gt; <br />&lt;XML id=xmldso src="tele.xml"&gt;&lt;/XML&gt; <br />&lt;center&gt;&lt;b&gt;计算机世界----通迅录&lt;/b&gt;&lt;br&gt;&lt;br&gt; <br />&lt;TABLE id="table" DATASRC='#xmldso' BORDER CELLPADDING=3&gt; <br />&lt;THEAD&gt;&lt;TH&gt;编号&lt;/TH&gt;&lt;TH&gt;部门名称&lt;/TH&gt;&lt;TH&gt;电话号码&lt;/TH&gt;&lt;TH&gt;电子邮件&lt;/TH&gt; <br />&lt;/THEAD&gt; <br />&lt;TR&gt; <br />&lt;TD&gt;&lt;label DATAFLD="contactID"&gt;&lt;/label&gt;&lt;/TD&gt; <br />&lt;TD&gt;&lt;label DATAFLD="部门名称"&gt;&lt;/label&gt;&lt;/TD&gt; <br />&lt;TD&gt;&lt;label DATAFLD="电话号码"&gt;&lt;/label&gt;&lt;/TD&gt;  <br />&lt;TD&gt;&lt;label DATAFLD="电子邮件"&gt;&lt;/label&gt;&lt;/TD&gt; <br />&lt;/TR&gt; <br />&lt;/TABLE&gt; <br />&lt;/center&gt;&lt;/BODY&gt;&lt;/HTML&gt; <br />**************************************************************************** <br />二、dom.htm（在线编辑通讯录）： <br />&lt;HTML&gt;&lt;BODY bgColor=#a1bae6&gt; <br />&lt;XML id=xmldso src="tele.xml"&gt;&lt;/XML&gt; <br />&lt;XML id=newid&gt;&lt;/XML&gt; <br />&lt;SCRIPT Language=JavaScript&gt; <br />newid.async = false; <br />newid.load("newid.xml"); <br />function addID(){ <br />var doc=xmldso.XMLDocument <br />var rootnode=doc.documentElement <br />var sortNode = rootnode.selectNodes("//部门名称") <br />var currentid = sortNode.length-1 <br />var cc=sortNode.item(currentid).text; <br />if ((cc=="尚未输入")||(cc=="")) <br />{ <br />alert("请将最后一行数据填写完毕后再增加新的记录！"); <br />} <br />else <br />{  <br />var node= newid.documentElement.childNodes(0).cloneNode(true); <br />var contactID=parseInt(sortNode.item(currentid).parentNode.getAttribute("contactID"))+1;  <br />node.setAttribute("contactID",contactID);  <br />xmldso.documentElement.appendChild(node); <br />} <br />} <br />function delID(whichFld){ <br />var sortNode = xmldso.selectSingleNode("//计算机世界[@contactID='"+whichFld+"']"); <br />if (sortNode.parentNode.childNodes.length&gt;1) sortNode.parentNode.removeChild(sortNode);  <br />} <br />&lt;/SCRIPT&gt; <br />&lt;script language="vbscript"&gt; <br />Sub cc_onmouseup '当点击“保存”按钮时触发； <br />Dim objXML, objXSL, objFSO,strFile, strFileName, strXSL,strURL,TheForm <br />set SaveXMLDoc=xmldso.XMLDocument <br />strURL="dns2.asp" <br />Set objXML = CreateObject("Microsoft.XMLHTTP") '创建MS的XMLHTTP组件； <br />objXML.Open "post",strURL,false '采用Post提交方式； <br />objXML.setrequestheader "content-type","application/x-www-form-urlencoded" <br />objXML.send SaveXMLDoc ' 发送信息 <br />'xmlGet = objXML.responsebody '稍等片刻后，得到服务器端传回来的结果； <br />msgbox "保存成功！"  <br />Set objXML = Nothing <br />end sub  <br />&lt;/SCRIPT&gt; <br />&lt;center&gt;&lt;b&gt;计算机世界----通信录&lt;/b&gt;&lt;br&gt;&lt;br&gt; <br />&lt;TABLE id="table" DATASRC='#xmldso' BORDER CELLPADDING=3&gt; <br />&lt;THEAD&gt; <br />&lt;TH&gt;编号&lt;/TH&gt; <br />&lt;TH&gt;部门名称&lt;/TH&gt; <br />&lt;TH&gt;电话号码&lt;/TH&gt; <br />&lt;TH&gt;电子邮件&lt;/TH&gt; <br />&lt;/THEAD&gt; <br />&lt;TR&gt; <br />&lt;TD&gt;&lt;acronym title='点击即可删除该记录'&gt;&lt;INPUT TYPE=button size=4 DATAFLD="contactID" onclick="delID(this.value)"&gt;&lt;/acronym&gt;&lt;/TD&gt; <br />&lt;TD&gt;&lt;INPUT TYPE=TEXT DATAFLD="部门名称"&gt;&lt;/TD&gt; <br />&lt;TD&gt;&lt;INPUT TYPE=TEXT DATAFLD="电话号码"&gt;&lt;/TD&gt;  <br />&lt;TD&gt;&lt;INPUT TYPE=TEXT DATAFLD="电子邮件"&gt;&lt;/TD&gt; <br />&lt;/TR&gt; <br />&lt;/TABLE&gt; <br />&lt;INPUT TYPE=BUTTON name=dd id=dd VALUE="增加记录" onmouseover="this.focus()" onmousedown="addID();"&gt; <br />&lt;INPUT TYPE=BUTTON name=cc id=cc VALUE="保存"&gt;&lt;/center&gt;&lt;/BODY&gt;&lt;/HTML&gt; <br />**************************************************************************** <br />三、dns2.asp（后台保存通讯录）： <br />&lt;% <br />Set ReceivedDoc = CreateObject("Microsoft.XMLDOM") <br />ReceivedDoc.async=False <br />ReceivedDoc.load Request <br />Set files=Server.CreateObject("Scripting.FileSystemObject") <br />Set numtxt=files.CreateTextFile(Server.MapPath("tele.xml"),True) <br />numtxt.WriteLine(replace(ReceivedDoc.xml,"?&gt;"," encoding=""gb2312""?&gt;")) <br />numtxt.Close <br />response.write ReceivedDoc.xml <br />%&gt; <br />**************************************************************************** <br />四、tele.xml（通讯录XML文档）： <br />&lt;?xml version="1.0" encoding="gb2312"?&gt; <br />&lt;中国计算机世界出版服务公司通信录&gt; <br />&lt;计算机世界 contactID="1"&gt; <br />&lt;部门名称&gt;电话总机&lt;/部门名称&gt; <br />&lt;电话号码&gt;010-68130909&lt;/电话号码&gt; <br />&lt;电子邮件&gt;webmaster@ccw.com.cn&lt;/电子邮件&gt; <br />&lt;/计算机世界&gt; <br />&lt;/中国计算机世界出版服务公司通信录&gt; <br />**************************************************************************** <br />五、newid.xml（通讯录XML初始化文档）： <br />&lt;?xml version="1.0" encoding="gb2312"?&gt; <br />&lt;中国计算机世界出版服务公司通信录&gt; <br />&lt;计算机世界 contactID="1"&gt; <br />&lt;部门名称&gt;尚未输入&lt;/部门名称&gt; <br />&lt;电话号码&gt;保密&lt;/电话号码&gt; <br />&lt;电子邮件&gt;保密&lt;/电子邮件&gt; <br />&lt;/计算机世界&gt; <br />&lt;/中国计算机世界出版服务公司通信录&gt; <br /></p>/html&gt;<img src ="http://www.cnitblog.com/asfman/aggbug/9304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2006-04-18 10:53 <a href="http://www.cnitblog.com/asfman/articles/9304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>