﻿<?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>C++博客-woaidongmao-随笔分类-Web-前台</title><link>http://www.cppblog.com/woaidongmao/category/11723.html</link><description>文章均收录自他人博客，但不喜标题前加-[转贴]，因其丑陋，见谅！~</description><language>zh-cn</language><lastBuildDate>Wed, 09 Sep 2009 15:25:46 GMT</lastBuildDate><pubDate>Wed, 09 Sep 2009 15:25:46 GMT</pubDate><ttl>60</ttl><item><title>理解Web框架，和如何构建一个CSS框架</title><link>http://www.cppblog.com/woaidongmao/archive/2009/09/09/95751.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Wed, 09 Sep 2009 15:23:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/09/09/95751.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/95751.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/09/09/95751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/95751.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/95751.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　近来，在<span lang="EN-US">Web</span>开发中<span lang="EN-US">”</span>框架<span lang="EN-US">”</span>是一个相当时髦的词。比如<span lang="EN-US">JavaScript </span>框架<span lang="EN-US"> YUI</span>、<span lang="EN-US"> JQuery</span>和<span lang="EN-US">Prototype </span>都引起广泛的关注，<span lang="EN-US"> Web</span>应用框架<span lang="EN-US">Rails and Dojo </span>更是引人瞩目，仿佛所有人都使用某种框架来开发自己的网站。但究竟什么是框架<span lang="EN-US">?</span>是不是框架仅仅是对程序员有用，设计师是否可以从中收益？ <span lang="EN-US"><a href="http://css.chinahtml.com/"><span lang="EN-US"><span lang="EN-US">内容来自站长资讯网(www.chinahtml.com)</span></span></a><?xml:namespace prefix = o /><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">什么是框架<span lang="EN-US">? <o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　为了便于沟通，我们给<span lang="EN-US">“</span>框架<span lang="EN-US">”</span>统一一个定义（至少在本篇文章中是统一的）：一套包含工具、函数库、约定，以及尝试从常用任务中抽象出可以复用的通用模块，目标是使设计师和开发人员把重点放在任务项目所特有的方面，避免重复开发。通常的讲，框架就是上面提到的<span lang="EN-US">JavaScript</span>框架和<span lang="EN-US">Web</span>应用框架。 <span lang="EN-US"><a href="http://css.chinahtml.com/"><span lang="EN-US"><span lang="EN-US">内容来自站长资讯网(www.chinahtml.com)</span></span></a><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　需要强调说明的是，我们不必讨论构造、打包发布，相反，一个框架只为你或你的团队使用即可。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span lang="EN-US" style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">CSS</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">框架 <span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　有些时候，你可能尝到了抽象类似的<span lang="EN-US">CSS</span>代码的甜头，在那些同时设计几个类似网站的设计师身上表现最为明显。此外，<span lang="EN-US"><a href="http://css.chinahtml.com/"><span lang="EN-US"><span lang="EN-US">站长资讯网欢迎您(www.chinahtml.com)</span></span></a></span>团队中的设计师们从框架的方法上有很多的获益。比如，我在一家报馆工作，所有的<span lang="EN-US">20</span>多个网站保持着很多的共同点，基于新闻网站的特点，它们趋向于更加相似，而不是差异。但是，即使单独一个设计师，<span lang="EN-US"><a href="http://css.chinahtml.com/"><span lang="EN-US"><span lang="EN-US">中国站长第一门户</span></span></a></span>设计一个从表面上看有差异很大的项目，也可以为<span lang="EN-US">CSS</span>框架抽象出一些通用的小碎片。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　劳伦斯日报（<span lang="EN-US">Lawrence Journal-World</span>），我在那里工作，我们最近建立了一个<span lang="EN-US">CSS</span>框架，并发现它是一个巨大的效率倍增。当然，我们花了数天时间自己创建了一个<span lang="EN-US">CSS</span>框架，但一旦框架完工，开发高质量网页的速度是极快的。更何况，既然团队每一个设计师现在都使用这个框架，当一个设计师修改另一个团队成员网页时，他们不再需要花<span lang="EN-US">20</span>分钟理解别人的构建思路，可以马上上手。 <span lang="EN-US"><a href="http://css.chinahtml.com/"><span lang="EN-US"><span lang="EN-US">内容来自站长资讯网(www.chinahtml.com)</span></span></a><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">有那些可以忽略<span lang="EN-US">? <o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　当投入到一个整体性很强的<span lang="EN-US">CSS</span>框架，你想寻找的东西，是每个项目都做了一遍又一遍的重复通用的代码，目标是巩固这些代码核心地位，遵循<span lang="EN-US">“</span>不重复自己（<span lang="EN-US">Don’t Repeat Yourself</span>）<span lang="EN-US">”</span>编码方法。这使得维护工作容易了许多，还可以帮访问者节省带宽开销。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　几乎每个我参与的项目中，我必须声明的几个<span lang="EN-US">CSS</span>问题： <span lang="EN-US"><a href="http://css.chinahtml.com/"><span lang="EN-US"><span lang="EN-US">内容来自站长资讯网(www.chinahtml.com)</span></span></a><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　<span lang="EN-US">“</span>大量重置<span lang="EN-US">”</span>浏览器默认风格，比如，<span lang="EN-US"><a href="http://css.chinahtml.com/"><span lang="EN-US"><span lang="EN-US">站长资讯网欢迎您(www.chinahtml.com)</span></span></a></span>设置所有元素的<span lang="EN-US">margin</span>和<span lang="EN-US">padding</span>为<span lang="EN-US">0</span>，去掉框架（<span lang="EN-US">framesets</span>）和图片（<span lang="EN-US">images</span>）的<span lang="EN-US">border</span>，等等。<span lang="EN-US"> <br></span>　　以基线对齐。这包括诸如设定块级元素的<span lang="EN-US">margins</span>相同的<span lang="EN-US">(</span>或多个<span lang="EN-US">)</span>基准行高，如段落（<span lang="EN-US">paragraph</span>）、头（<span lang="EN-US">header</span>）、以及列表（<span lang="EN-US">list</span>）。<span lang="EN-US"> <br></span>　　创建表单（<span lang="EN-US">Form</span>）的基本样式。<span lang="EN-US"> <br></span>　　创建几个常用的<span lang="EN-US">CSS </span>类，例如，<span lang="EN-US">.hide(</span>把<span lang="EN-US">display</span>置为<span lang="EN-US">none</span>，即隐藏元素<span lang="EN-US">)</span>、<span lang="EN-US">.mute(</span>设定为一个较小的字体和较亮的颜色<span lang="EN-US">)</span>。<span lang="EN-US"> <br></span>　　还有更有趣的事情，许多网站设计师发现自己不断重复使用着相同的基本结构，<span lang="EN-US"><a href="http://css.chinahtml.com/"><span lang="EN-US"><span lang="EN-US">中国站长第一门户</span></span></a></span>为什么不动它整理成自己的，在某种程度上可以非常灵活的用于多个网站<span lang="EN-US">?Yahoo</span>这样做了，这就是<span lang="EN-US">YUI</span>。当我们为的劳伦斯日报网站（<span lang="EN-US">the Journal-World</span>）建立<span lang="EN-US">CSS</span>框架的时候，我先看看<span lang="EN-US">Yahoo</span>是怎么做的。我们很肯定那不是我们想要的，但作为一个很好的例子，给我们提供了很多思考和如何建构自己框架的想法。我们解决了<span lang="EN-US">16</span>个单元格的问题，它具有足够的灵活性使我们的每一个网站都可以应用，即使每个网站看上去与下一个版本有些差异。另外大多数网站共用<span lang="EN-US">widgets </span>，象下拉菜单、导航菜单、按钮等，这些也是主要的需要抽象提取的对象。除此之外<span lang="EN-US">,</span>你可能有共同的内容名称，如图片列表的缩略图，<span lang="EN-US"><a href="http://css.chinahtml.com/"><span lang="EN-US"><span lang="EN-US">站长资讯网欢迎您(www.chinahtml.com)</span></span></a></span>你可以规范对<span lang="EN-US">CSS</span>命名，如<span lang="EN-US">“thumbnail-list”</span>，让所有显示缩略图的都使用这个<span lang="EN-US">CSS</span>类。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　另外要做的可能是抽取<span lang="EN-US">hack</span>（如兼容那些旧浏览器<span lang="EN-US">)</span>加入自己的扩展的样式模块。我自己尝试过，但发现<span lang="EN-US">hack</span>过于专有而不能抽取到通用框架里。 <span lang="EN-US"><a href="http://css.chinahtml.com/"><span lang="EN-US"><span lang="EN-US">内容来<span lang="EN-US">自站长资讯网(www.chinahtml.com)</span></span></span></a><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">什么是真正的益处<span lang="EN-US">? <o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　框架的真正好处是能够快速启动工作，你可以创建一个新的<span lang="EN-US">(X)HMTL</span>文件，引入你框架，你不用再处理重置<span lang="EN-US">padding </span>和<span lang="EN-US"> margins</span>的事情，漂亮的排版，干净的表单，整齐的布局，有效的<span lang="EN-US">widgets</span>，等等。很明显，很明显，虽然，你一定要来定制外观和感觉为每个站点。为实现这一目标<span lang="EN-US">,</span>所有你需要做的是复写<span lang="EN-US">,</span>并添加到默认的风格是必要的。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　很显然，尽管你必须为每个网站定制外观，为了完成这一任务，你所需要做的就是在默认的样式上加几行代码。举个例子，如果在你的框架里，为所有的<span lang="EN-US">class</span>属性为<span lang="EN-US">“tabs”</span>的<span lang="EN-US">UL</span>标签设置了基本的水平导航样式，并且有一个灰色的边框，你只需要几行<span lang="EN-US">CSS</span>代码，就可以定制成你的网站所符合的外观样式。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span lang="EN-US" style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial"><br>Example Source Code <br>view plaincopy to clipboardprint?<br>ul.tabs li { <br>border: none; <br>background-image: url(’/images/tabs/ ?site-specific-tab-look.jpg’); <br>} <br>ul.tabs li {<br>border: none;<br>background-image: url(’/images/tabs/ ?site-specific-tab-look.jpg’);<br>}<o:p></o:p></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　列表左浮动，并且将链接以块的形式置于列表当中，链接也左浮动，字体居中，象烦人的广告一样的这些工作，框架以帮你完成，在你的网站设计工作中，只需集中精力处理特别的、有趣的网站细节，而不是写已经写过百万次的<span lang="EN-US">CSS</span>代码。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">如何构建一个<span lang="EN-US">CSS</span>框架<span lang="EN-US">? <o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　构建一个框架有几种可能的方式，但最常见，可以说是最有用的，抽象通用的<span lang="EN-US">CSS</span>放到一个独立样式表文件，该样式表文件只包含整体的一个特有部分。例如<span lang="EN-US">,</span>你可以，一个样式处理排版，另一个处理大量重置。这种好的方法能使你选择性引入你需要的样式，在你框架里可能有六七个不同的样式文件，但不需要其中的一两个，只要不引入即可。我们团队创建的框架包含<span lang="EN-US">5</span>个样式文件：<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　<span lang="EN-US">reset.css —</span>处理重置<span lang="EN-US"> <br></span>　　<span lang="EN-US">type.css —</span>处理排版<span lang="EN-US"> <br></span>　　<span lang="EN-US">grid.css —</span>处理布局<span lang="EN-US"> <br></span>　　<span lang="EN-US">widgets.css —</span>处理小零件（<span lang="EN-US">widgets</span>），如<span lang="EN-US">tab</span>菜单、下拉菜单、以及<span lang="EN-US">“</span>更多<span lang="EN-US">”</span>按钮<span lang="EN-US"> <br></span>　　<span lang="EN-US">base.css —</span>包含所有的其他样式表文件，以便我们只需要在<span lang="EN-US">(X)HTML</span>引用<span lang="EN-US">base.css</span>即可使用整个<span lang="EN-US">CSS</span>框架<span lang="EN-US"> <br></span>　　然后，我们把框架存放在一个单独的地方，使每一个站点都引入这个框架。当然，每一个网站也需要有特有样式表，特有样式对框架进行了必要的补充。 <span lang="EN-US"><a href="http://css.chinahtml.com/"><span lang="EN-US"><span lang="EN-US">内容来自站长资讯网(www.chinahtml.com)</span></span></a><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">忠告 <span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　这种方法不错<span lang="EN-US">,</span>但也带来新的问题：增加了每一个页面的<span lang="EN-US">http</span>链接数。对于大流量和中等流量的网站，每个页面增加<span lang="EN-US">5</span>个以上<span lang="EN-US">HTTP</span>连接数，<span lang="EN-US"><a href="http://css.chinahtml.com/"><span lang="EN-US"><span lang="EN-US">站长资讯网欢迎您(www.chinahtml.com)</span></span></a></span>系统管理员可能就麻烦大了。两个可能解决办法：<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　把所有样式都放到一个文件里，而不是分成多个模块。这里的问题是，失去了框架只包含特定文件的灵活性，而且维护也变得麻烦。<span lang="EN-US"> <br></span>　　有一个服务器端程序<span lang="EN-US">,</span>动态把多个单个文件处理成一个响应。我还没看到这种做法，但如果做好了应该是很有效率的。以我上面框架为例，当请求（<span lang="EN-US">Request</span>）<span lang="EN-US">base.css</span>时候，而不是请求（<span lang="EN-US">Request</span>）<span lang="EN-US">type.css , grids.css </span>等的时候，这一动态处理过程触发。这样一来<span lang="EN-US">,</span>单个文件仍然可用，而在平台版本上整个框架也有效的。<span lang="EN-US"> <br></span>　　总之，我们目标不是尽可能的抽象，这点非常重要。相反<span lang="EN-US">,</span>其目标是提供了一个快速启动和更有效率的设计过程，这是绝对有可能去做过的。如果你过于的抽象，事情会变得混乱，太多的<span lang="EN-US">HTTP</span>链接数会影响你网站的性能。记住：一个好的框架不是把事情搞更难更复杂，而是一个简单的从零的开始。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">总结 <span lang="EN-US"><a href="http://css.chinahtml.com/"><span lang="EN-US"><span lang="EN-US">内容来自站长<span lang="EN-US">资讯网(www.chinahtml.com)</span></span></span></a> <o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial">　　我们<span lang="EN-US">web</span>设计师往往经常重复自己，就像我程序世界里的那些朋友，我们重置浏览器默认样式、设计布局和导航菜单写了一遍又一遍<span lang="EN-US">——</span>几乎每个项目。花一点时间整理<span lang="EN-US">CSS </span>框架，可以使你快速的启动每一个网站项目，更轻松的维护网站，并帮助团队里其他的设计师理解你作品。要注意的一点，这些益处的获得必须以不影响网站的性能为前提。 <span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="line-height: 150%"><span lang="EN-US" style="font-size: 12pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: arial"><o:p>&nbsp;</o:p></span></p><img src ="http://www.cppblog.com/woaidongmao/aggbug/95751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-09-09 23:23 <a href="http://www.cppblog.com/woaidongmao/archive/2009/09/09/95751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>favicon.ico</title><link>http://www.cppblog.com/woaidongmao/archive/2009/09/08/95577.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Tue, 08 Sep 2009 07:25:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/09/08/95577.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/95577.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/09/08/95577.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/95577.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/95577.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　在我们的网站建设中，为网站打造一个契合网站主题的个性化标志则是必需的，这直接关系到能否成功地塑造网站的品牌。这从某些角度看仍在网站推广的范畴之内，而欲取得成功，不仅包括良好的页面设计、令人印象深刻的网站<span lang=EN-US><a href="http://baike.baidu.com/view/457.htm" target=_blank>Logo</a></span>，也包括<span lang=EN-US>favicon</span>。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　什么是<span lang=EN-US>favicon</span>？<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　所谓<span lang=EN-US><a href="http://baike.baidu.com/view/188557.htm" target=_blank>favicon</a></span>，即<span lang=EN-US>Favorites Icon</span>的缩写，顾名思义，便是其可以让浏览器的收藏夹中除显示相应的标题外，还以图标的方式区别不同的网站。当然，这不仅仅是<span lang=EN-US>Favicon</span>的全部，根据浏览器的不同，<span lang=EN-US>Favicon</span>显示也有所区别：在大多数主流浏览器如<span lang=EN-US>FireFox</span>和<span lang=EN-US>Internet Explorer (5.5</span>及以上版本<span lang=EN-US>)</span>中，<span lang=EN-US>favicon</span>不仅在收藏夹中显示，还会同时出现在地址栏上，这时用户可以拖曳<span lang=EN-US>favicon</span>到桌面以建立到网站的快捷方式；除此之外，标签式浏览器甚至还有不少扩展的功能，如<span lang=EN-US>FireFox</span>甚至支持动画格式的<span lang=EN-US>favicon</span>等。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　从特定的技术角度看，<span lang=EN-US>favicon</span>也并不只是仅仅让网站给人更专业的观感，也可以在一定程度上减轻服务器的流量带宽占用：一般为了提高网站的可用性，我们都会为自己的网站创建一个自定义的<span lang=EN-US>404</span>错误文件，在这种情况下，如果网站没有相应的<span lang=EN-US>favicon.ico</span>文件，每当有用户收藏网站<span lang=EN-US>/</span>网页时，<span lang=EN-US> Web</span>服务器都会调用这个自定义的<span lang=EN-US>404</span>文件，并在网站的错误日志中记录。这显然是应该予以避免的。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　如何制作<span lang=EN-US>Favicon.ico<o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　制作<span lang=EN-US>Favicon.ico</span>的方法相当简单，首先，利用图形工具创建<span lang=EN-US>2</span>个反映网站主题的<span lang=EN-US>256</span>色的小图片：<span lang=EN-US>1</span>个为<span lang=EN-US>32&#215;32</span>像素，另一个为<span lang=EN-US>16 &#215;16</span>像素。需要注意的是，调色板要选用<span lang=EN-US>&#8220;Windows </span>默认调色板<span lang=EN-US>&#8221;</span>，不然，在最终的效果展示中图形可能会发生迥异于您初衷的颜色上变化。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　需要说明的是，在很多关于<span lang=EN-US>Favicon.ico</span>的说明中，常见到要求图片为<span lang=EN-US>16</span>色的说法，应该说这类说法大大过时：在早期如<span lang=EN-US>Windows 95</span>时期，<span lang=EN-US>16</span>色的<span lang=EN-US>Favicon.ico</span>可能是个稳妥的选择，保证其在大多数情况下正常使用，但现在，完全不存在那类限制，<span lang=EN-US>16</span>色只能使图标的展示效果大大降低。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　至于在浏览器中使用时<span lang=EN-US>16&#215;16</span>像素的图片已经足够，为什么还要准备<span lang=EN-US>32&#215;32</span>像素的图片，原因在于，正如上文所言，<span lang=EN-US>favicon</span>也显示在地址栏中，用户可以拖曳<span lang=EN-US>favicon</span>到桌面以建立到网站的快捷方式，而桌面图标则要以<span lang=EN-US>32&#215;32</span>显示的，如果您的<span lang=EN-US>Favicon.ico</span>不包括<span lang=EN-US>32</span>像素的图片，系统就只能使用默认的浏览器图标来标注网站<span lang=EN-US>/</span>网页，如<span lang=EN-US>Internet Explorer</span>的蓝色<span lang=EN-US>&#8220;e&#8221;</span>，起不到我们意欲通过<span lang=EN-US>Favicon.ico</span>打造网站品牌的作用。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　图片制作好后，使用如<span lang=EN-US>Image2Ico</span>之类的小程序即可将<span lang=EN-US>2</span>张图片转换到一个<span lang=EN-US>Icon</span>文件中。也可以通过可以在线制作<span lang=EN-US>Favicon</span>的网站来制作，不过，需要注意的是，这个网站要求图片源文件格式为<span lang=EN-US>Pic</span>。可以在线制作<span lang=EN-US>favicon.ico</span>的地址：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　<span lang=EN-US>http://www.chami.com/html-kit/services/favicon/<o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　在网页中使用<span lang=EN-US>Favicon.ico<o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　浏览器调用<span lang=EN-US>Favicon</span>的原则是首先在网页所在的目录下寻找<span lang=EN-US>Favicon.ico</span>文件，如果没有，便到网站的根目录下寻找。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　因此，在网页中使用<span lang=EN-US>Favicon</span>最简单的办法便是将制作好的图标文件命名为<span lang=EN-US>Favicon.ico</span>，然后将其上传到网站的根目录即可。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　如果您需要将<span lang=EN-US>Favicon.ico</span>放到其他目录下，或者希望让不同的网页显示不同的<span lang=EN-US>Favicon</span>，就需要在网页<span lang=EN-US>Html</span>文件中做设定了，具体设置也很简单，在<span lang=EN-US>Html</span>中的＜<span lang=EN-US>head</span>＞部分加入如下的代码：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　程序代码<span lang=EN-US>: &lt;link rel="icon" href="/dir/favicon.ico" mce_href="/dir/favicon.ico" type="image/x-icon"&gt;<o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　<span lang=EN-US>&lt;link rel="shortcut icon" href="/dir/favicon.ico" mce_href="/dir/favicon.ico" type="image/x-icon"&gt;<o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　<span lang=EN-US>Firefox</span>还支持<span lang=EN-US>GIF</span>动画格式的<span lang=EN-US>Favicon,</span>使用方法如下<span lang=EN-US>:<o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　首先制作一个<span lang=EN-US>16*16</span>的<span lang=EN-US>gif</span>动画<span lang=EN-US>,</span>然后在<span lang=EN-US>html</span>代码<span lang=EN-US>&lt;head&gt;&lt;/head&gt;</span>中加入如下代码<span lang=EN-US>:<o:p></o:p></span></span></p>
<p class=MsoNormal style="WORD-BREAK: break-all; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　程序代码<span lang=EN-US> &lt;link rel="shortcut icon" href="favicon.ico" &gt;<o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; LETTER-SPACING: 0.4pt; mso-bidi-font-family: arial">　　<span lang=EN-US>&lt;link rel="icon" href="animated_favicon.gif" type="image/gif" &gt;</span></span><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><o:p></o:p></span></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/95577.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-09-08 15:25 <a href="http://www.cppblog.com/woaidongmao/archive/2009/09/08/95577.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jQuery一步一步实现跨浏览器的可编辑表格，支持IE、Firefox、Safari、Chrome、Opera</title><link>http://www.cppblog.com/woaidongmao/archive/2009/08/27/94606.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Thu, 27 Aug 2009 14:03:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/08/27/94606.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/94606.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/08/27/94606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/94606.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/94606.html</trackback:ping><description><![CDATA[<p><a title=http://www.cnblogs.com/psunny/archive/2009/08/27/1555270.html href="http://www.cnblogs.com/psunny/archive/2009/08/27/1555270.html">http://www.cnblogs.com/psunny/archive/2009/08/27/1555270.html</a></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/94606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-08-27 22:03 <a href="http://www.cppblog.com/woaidongmao/archive/2009/08/27/94606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怎样在 Windows 环境下调试 JScript 脚本</title><link>http://www.cppblog.com/woaidongmao/archive/2009/08/27/94605.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Thu, 27 Aug 2009 13:58:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/08/27/94605.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/94605.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/08/27/94605.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/94605.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/94605.html</trackback:ping><description><![CDATA[<p>&#160;</p>
<form id=Form1 name=Form1 action=http://www.cppblog.com/94539.html method=post _initialAction="94539.html">
    <div id=centercontent>
    <div class=post>
    <p>src:<a title=http://www.cppblog.com/free2000fly/archive/2009/08/27/94539.html href="http://www.cppblog.com/free2000fly/archive/2009/08/27/94539.html">http://www.cppblog.com/free2000fly/archive/2009/08/27/94539.html</a></p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>安装 VS2005 或 VS2008 等 Microsoft 的开发工具. <br>然后用你趁手的文本编辑器编写你想要调试的脚本. 保存为以 .js 为扩展名的文件. </p>
    <p>为刚才保存的文件创建快捷方式, 具体的方法为: <br>1. 在这个文件上单击鼠标右键, 在弹出的菜单上点击 "创建快捷方式"("Create Shortcut"), 就会为这个脚本文件创建一个快捷方式; <br>(图1)<img src="http://www.cppblog.com/images/cppblog_com/free2000fly/11584/o_untitled001.PNG" border=0><br>2. 然后修改这个快捷方式的属性 -- 在快捷方式上右击鼠标, 在弹出的菜单上点击 "属性"("Properties"), 这将弹出 "属性" 对话框;<br>3. 修改 "快捷方式"("Shortcut") 选项卡的 "目标"("Target") 编辑框, 将其原始内容如 "C:\AppWiz60\setup.js" 改为 "wscript.exe //X C:\AppWiz60\setup.js"<br>(图2)<img src="http://www.cppblog.com/images/cppblog_com/free2000fly/11584/o_untitled002.PNG" border=0><br>4. 点击 "确定"("OK") 按钮完成配置.</p>
    <p>其实, "wscript.exe" 命令有很多选项的, 我们可以在 cmd 命令行上输入 "wscript.exe /?" 来看看都有些啥:<br>(图9)<img src="http://www.cppblog.com/images/cppblog_com/free2000fly/11584/o_untitled009.PNG" border=0></p>
    <p>现在, 双击我们创建的这个快捷方式, 这将弹出一个提示对话框,<br>(图3)<img src="http://www.cppblog.com/images/cppblog_com/free2000fly/11584/r_untitled003.PNG" border=0></p>
    <p>可以选择你想用的调试器如 vs2005 等, 然后点击确定, 就会启动 VS2005 脚本调试器, 调试器启动完毕后, 将会停留在脚本的第一条语句上. <br>(图4)<img src="http://www.cppblog.com/images/cppblog_com/free2000fly/11584/r_untitled004.PNG" border=0></p>
    <p>这时, 你就可以像调试 C++ 程序一样了. 单步, 跟进, 断点, 查看内容, 等等. 如下图.<br>(图5)<img src="http://www.cppblog.com/images/cppblog_com/free2000fly/11584/r_untitled005.PNG" border=0><br><br><br>如果我们需要在 html 网页上调试 JScript, 或者以其他形式存在的 JScript 脚本, 我们可以在想下断点的语句前添加 debugger; 语句. <br>打开 IE 浏览器, 单击菜单栏的 "工具" -&gt; Internet 选项 -&gt; 高级选项卡 -&gt; 取消 "禁用脚本调试(Internet Explorer)" 和 "禁用脚本调试(其他)" 两个复选框的选中状态. <br><img src="http://www.cppblog.com/images/cppblog_com/free2000fly/11584/r_untitled006.PNG" border=0><br><br>这样, 当脚本执行到 debugger; 语句时, 也将会弹出 <br><img height=430 src="http://www.cppblog.com/images/cppblog_com/free2000fly/11584/r_untitled003.PNG" width=398 border=0><br>对话框. 后续的调试一如前述.</p>
    <br><br>参考文献: <br>How to debug Windows Script Host, VBScript, and JScript files<br><a href="http://support.microsoft.com/kb/308364/en-us">http://support.microsoft.com/kb/308364/en-us</a><br></div>
    </div>
</form>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/94605.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-08-27 21:58 <a href="http://www.cppblog.com/woaidongmao/archive/2009/08/27/94605.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于RIA Flex Flash 平台开发的进销存系统开发经验</title><link>http://www.cppblog.com/woaidongmao/archive/2009/08/17/93663.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Mon, 17 Aug 2009 15:53:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/08/17/93663.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/93663.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/08/17/93663.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/93663.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/93663.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">(</span><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">欢迎转载，转载请注明作者，尊重版权<span lang=EN-US>) <br><br></span>作者<span lang=EN-US><a href="http://www.tangusoft.com/" target=_blank>http://www.tangusoft.com</a> <br><br><br><br><br><br></span>一．中小企业进销存系统和运行平台以及技术架构<span lang=EN-US> <br><br><br><br>1. </span>中小企业进销存系统特点：<span lang=EN-US> <br><br>a. </span>目标客户<span lang=EN-US> <br><br></span>零售批发中小企业，企业规模人数<span lang=EN-US>500</span>人以下，销售额<span lang=EN-US>1500</span>万元以下。<span lang=EN-US> <br><br>b. </span>数据操作频繁<span lang=EN-US> <br><br></span>每天频繁操作销售和采购以及仓库出入库，经常需要查看企业基本信息<span lang=EN-US>,</span>包括商品信息，客户供应商信息，应收应付。并且需要快捷的操作系统。<span lang=EN-US> <br><br>c</span>．存储数据量有限<span lang=EN-US> <br><br></span>商品信息大概<span lang=EN-US>5000</span>条，客户供应商大概<span lang=EN-US>1000</span>，<span lang=EN-US> <br><br></span>每天单据信息大概<span lang=EN-US>50</span>条，每年单据信息大概<span lang=EN-US>20000</span>条<span lang=EN-US> <br><br>d.</span>并发操作用户数量固定<span lang=EN-US> <br><br></span>销售员，采购员，经理，财务，大概<span lang=EN-US>20</span>人左右。<span lang=EN-US> <br><br>e. </span>用户使用地点不同<span lang=EN-US> <br><br></span>需要直接方便浏览器访问系统<span lang=EN-US> <br><br>f. </span>客户浏览器处理功能强大<span lang=EN-US> <br><br></span>目前客户电脑普遍内存<st1:chmetcnv unitname="g" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"><span lang=EN-US>1G</span></st1:chmetcnv><span lang=EN-US>, </span>处理器 双核<span lang=EN-US>2.0 </span>以上<span lang=EN-US> <br><br>g</span>．中小企业普遍软件预算不高<span lang=EN-US> <br><br></span>同时也尽量避免盗版软件引起的法律诉讼和纠纷。<span lang=EN-US> <br><br><br><br>2. </span>运行平台和系统架构<span lang=EN-US> <br><br></span>根据中小企业进销存系统的众多特点，同时考虑技术成熟度和新技术风险，我们决定采取以下运行平台和系统架构<span lang=EN-US> <br><br></span>运行平台<span lang=EN-US> Linux Apache Tomcat Mysql <br><br></span>系统架构<span lang=EN-US> <br><br></span>表现层<span lang=EN-US>Flex 3 <br><br></span>数据处理和控制层<span lang=EN-US>Blazds + Spring + Ibatis <br><br><br><br>Flex/Flash&nbsp; </span>具有以下优点<span lang=EN-US> <br><br></span>客户端 界面友好，数据表现能力强大，处理能力强大，有一定的缓存数量的能力，减少服务器请求次数，节省不必要的网络传输。<span lang=EN-US> <br><br>BlazDS </span>能够处理并发用户的请求，并且能够压缩数据。<span lang=EN-US> <br><br>Spring&nbsp; </span>声明性的代码配置，减少系统维护工作量<span lang=EN-US> <br><br>Ibatis&nbsp;&nbsp; </span>减少实际编码，考虑以后支持多种商业数据库<span lang=EN-US> <br><br><br><br></span>运行平台免费，企业零预算。<span lang=EN-US> <br><br><br><br></span>二，框架和代码生成器<span lang=EN-US> <br><br><br><br><br><br>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>选择成熟的<span lang=EN-US>Flex </span>框架<span lang=EN-US> <br><br><br><br>cairngorm </span>和<span lang=EN-US> pure MVC </span>是目前成熟的<span lang=EN-US>open source </span>框架。<span lang=EN-US> <br><br></span>基于<span lang=EN-US>Adobe </span>支持和维护<span lang=EN-US>cairngorm</span>，所以采用<span lang=EN-US>cairngorm <br><br></span>同时<span lang=EN-US>cairngorm </span>对<span lang=EN-US>view </span>表现层 和<span lang=EN-US> control </span>控制层 的 隔离和耦合没有成熟的解决方案，开发过程我们曾经使用<span lang=EN-US>ViewControllerHelper </span>，用<span lang=EN-US>addListener</span>监听器监听<span lang=EN-US>event </span>事件的执行，实际过程发现代码维护成本太高，遂中途放弃。<span lang=EN-US> <br><br></span>最后我们同时引进<span lang=EN-US>universal mind cairngorm</span>作为补充辅助框架。<span lang=EN-US> <br><br>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ibatis </span>代码生成器<span lang=EN-US> <br><br></span>选择<span lang=EN-US>Abator <br><br><br><br><br><br></span>三，解决方案<span lang=EN-US> <br><br>1. </span>客户端尽可能使用单例模式<span lang=EN-US> <br><br></span>减少不必要的客户端内存开销<span lang=EN-US> <br><br>2. </span>适度利用客户端缓存<span lang=EN-US> <br><br></span>对于商品以及客户供应商，<span lang=EN-US> Flex </span>缓存这些数据，各模块共享数据。<span lang=EN-US> <br><br>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>尽可能的采用<span lang=EN-US>lazy load </span>惰性载入数据<span lang=EN-US> <br><br></span>很多<span lang=EN-US>Flex </span>系统采用初始化时候一次性载入系统所需要数据，结果导致延长用户登录时间，用户体验非常的差。<span lang=EN-US> <br><br>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>不要过度依赖客户端处理能力<span lang=EN-US> <br><br></span>特别是大数据排序或者处理请求大数据能力的时候，<span lang=EN-US>flex </span>很容易导致浏览器停顿和不响应。请把大数据排序放在<span lang=EN-US>Java</span>或者数据库端，适度的分页分段向服务器请求数据。<span lang=EN-US> <br><br>5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>最大有效的利用<span lang=EN-US>Flex 3</span>新的类库。<span lang=EN-US> <br><br></span>减少开发工作量。<span lang=EN-US> <br><br></span>例如利用<span lang=EN-US>arraycollection </span>内置的<span lang=EN-US>filerfunction </span>进行查找数据。<span lang=EN-US> <br><br>6. </span>定制开发一些特有的控件<span lang=EN-US> <br><br></span>带合计栏的<span lang=EN-US>datagrid <br><br></span>能模糊查询的<span lang=EN-US>combobox <br><br>7.</span>报表开发<span lang=EN-US> <br><br></span>使用成熟的<span lang=EN-US>jasper report </span>框架。<span lang=EN-US> <br><br>8. </span>用户权限的开发<span lang=EN-US> <br><br></span>动态创建用户所能操作的模块，而不是简单控制模块的可见和不可见属性<span lang=EN-US> <br><br>9. </span>减少生成<span lang=EN-US>swf </span>大小<span lang=EN-US> <br><br></span>使用<span lang=EN-US>runtime shared library </span>编译<span lang=EN-US>swf <br><br>10. </span>开发模块组件化<span lang=EN-US> <br><br></span>判断标准是没有出现冗余重复模块代，<span lang=EN-US>application mxml </span>文件代码简洁<span lang=EN-US> <br><br>11. </span>模块之间的数据和方法调用<span lang=EN-US> <br><br><br><br>A</span>模块引用<span lang=EN-US>B</span>模块的数据<span lang=EN-US>d</span>和方法<span lang=EN-US>f</span>，避免简单的调用<span lang=EN-US>B.d </span>和<span lang=EN-US> B.f <br><br></span>需要采用数据和方法的传递，以免多层次的模块数据和方法调用导致代码的复杂。<span lang=EN-US> <br><br>12 </span>使用<span lang=EN-US>resource bundle <br><br></span>标签和文本以及提示从<span lang=EN-US>resource </span>文件读取。<span lang=EN-US> <br><br><br><br></span>四，基于<span lang=EN-US>Flex</span>的进销存系统演示地址<span lang=EN-US> <br><br><br><br><a href="http://www.tangusoft.com/Demo/">http://www.tangusoft.com/Demo/</a><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">flex</span><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">的长处是数据的图形化。但用<span lang=EN-US>flex</span>显视二维数据和传统的<span lang=EN-US>html</span>相比，却显得呆版，笨重。</span><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><o:p></o:p></span></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/93663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-08-17 23:53 <a href="http://www.cppblog.com/woaidongmao/archive/2009/08/17/93663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript 使用面向对象的技术创建高级 Web 应用程序</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91466.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Tue, 28 Jul 2009 05:55:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91466.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91466.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91466.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91466.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91466.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近，我面试了一个有五年 Web 应用程序开发经验的软件开发人员。四年半来她一直在从事 JavaScript 相关的工作，她自认为 JavaScript 技能非常好，但在不久之后我就发现实际上她对 JavaScript 知之甚少。话虽这样说，但我确实没有责备她的意思。JavaScript 真的是很有趣。很多人（包括我自己，直到最近！）都认为自己很擅长 JavaScript 语言，因为他们都知道 C...&nbsp;&nbsp;<a href='http://www.cppblog.com/woaidongmao/archive/2009/07/28/91466.html'>阅读全文</a><img src ="http://www.cppblog.com/woaidongmao/aggbug/91466.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-28 13:55 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/28/91466.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSON剖析：优点和不足</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91440.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Tue, 28 Jul 2009 03:48:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91440.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91440.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91440.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91440.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">摘要<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　<span lang=EN-US>XML</span>——这种用于表示客户端与服务器间数据交换有效负载的格式，几乎已经成了<span lang=EN-US>Web services</span>的同义词。然而，由于<span lang=EN-US>Ajax</span>和<span lang=EN-US>REST</span>技术的出现影响了应用程序架构，这迫使人们开始寻求<span lang=EN-US>`XML</span>的替代品，如：<span lang=EN-US>JavaScript Object Notation</span>（<span lang=EN-US>JSON</span>）。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　<span lang=EN-US>JSON </span>作为一种更轻、更友好的<span lang=EN-US> Web services</span>客户端的格式（多采用浏览器的形式或访问<span lang=EN-US> REST</span>风格<span lang=EN-US> Web</span>服务的<span lang=EN-US>Ajax</span>应用程序的形式）引起了<span lang=EN-US> Web </span>服务供应商的注意。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　本文将阐述<span lang=EN-US>JSON</span>在<span lang=EN-US>Web services</span>设计中备受推崇的原因，以及它作为<span lang=EN-US>XML</span>替代方案的主要优势和局限性。文中还会深入探讨：随着相应的<span lang=EN-US>Web </span>服务客户端选择使用<span lang=EN-US>JSON</span>，如何才能便捷地在<span lang=EN-US>Java Web services</span>中生成<span lang=EN-US>JSON</span>输出。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">XML</span><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">的十字路口<span lang=EN-US>: </span>浏览器和<span lang=EN-US> Ajax<o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　<span lang=EN-US>XML</span>设计原理已经发布了将近十年。时至今日，这种标记语言已经在广阔的软件应用领域中占据了主导地位。从<span lang=EN-US>Java</span>、<span lang=EN-US>.NET</span>等主流平台中的配置和部署描述符到应用集成场景中更复杂的应用，<span lang=EN-US>XML</span>与生俱来的语言无关性使之在软件架构师心目中占据着独特的地位。但即便最著名的<span lang=EN-US>XML</span>权威也不得不承认：在某些环境中，<span lang=EN-US>XML</span>的使用已经超出了它自身能力的极限。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　围绕<span lang=EN-US>Ajax</span>原理构建的那些<span lang=EN-US>Web</span>应用程序最能说明<span lang=EN-US>XML</span>的生存能力，从这一点来看，一种新的有效负载格式的发展壮大也得益于<span lang=EN-US>XML</span>。这种新的有效负载格式就是<span lang=EN-US>JavaScript Object Notation (JSON)</span>。在探索这种新的标记语言的复杂性之前，首先来分析一下在这种独特的设计形式中，<span lang=EN-US>XML</span>具有哪些局限性。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　<span lang=EN-US>Ajax</span>建立了一个用于从远程<span lang=EN-US>Web services</span>发送和接收数据的独立信道，从而允许<span lang=EN-US>Web</span>程序执行信道外（<span lang=EN-US>out-of-band</span>）客户端<span lang=EN-US>/</span>服务器调用。通俗地说，<span lang=EN-US>Ajax</span>程序中的更新和导航序列在典型的客户端<span lang=EN-US>/</span>服务器环境之外完成，在后台（即信道外）接受到信息后，必须进行一次完整的屏幕刷新。更多背景信息，请参阅<span lang=EN-US>David Teare</span>的<span lang=EN-US> Ajax</span>简介（<span lang=EN-US>Dev2Dev</span>）。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　这些应用程序更新通常是通过<span lang=EN-US>REST</span>风格（<span lang=EN-US>RESTful</span>）<span lang=EN-US>Web services</span>获得的，一旦被用户的浏览器接收到，就需要整合到<span lang=EN-US>HTML</span>页面的总体布局之中，这正是<span lang=EN-US>XML</span>发挥强大力量的场合。尽管近年来，脚本语言支持和插件支持已使大多数主流浏览器的功能得到了强化，但许多编程任务依然难于开展，其中之一就是操纵或处理文本，这通常是使用<span lang=EN-US>DOM</span>实现的。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　采用<span lang=EN-US>DOM</span>的复杂性源于其基于函数的根，这使得对数据树的简单修改或访问都需要进行无数次方法调用。此外，众所周知，<span lang=EN-US>DOM</span>在各种浏览器中的实现细节不尽相同，这一过程将带来极为复杂的编程模式，其跨浏览器兼容性出现问题的可能性极大。接下来的问题显而易见，那就是：如何使一种标记语言轻松集成到<span lang=EN-US>HTML</span>页面中以满足<span lang=EN-US>Ajax</span>的要求？<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　问题的答案就是：利用所有主流浏览器中的一种通用组件——<span lang=EN-US>JavaScript</span>引擎。<span lang=EN-US>XML</span>需要使用<span lang=EN-US>DOM</span>之类的机制来访问数据并将数据整合到布局之中，采用这种方法，我们不再使用像<span lang=EN-US>XML</span>这样的格式来交付<span lang=EN-US>Ajax</span>更新，而是采用一种更为简单直观的方式，采用<span lang=EN-US>JavaScript</span>引擎自然匹配的格式——也就是<span lang=EN-US>JSON</span>。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　既然已经明确了<span lang=EN-US>JSON</span>与<span lang=EN-US>XML</span>和<span lang=EN-US>Ajax</span>之间的关系，下面将进一步探讨<span lang=EN-US>JSON</span>背后的技术细节。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">JSON</span><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">剖析：优点和不足<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　对于<span lang=EN-US>JSON</span>，首先要明白<span lang=EN-US>JSON</span>和<span lang=EN-US>XML</span>一样也是一种简单文本格式。相对于<span lang=EN-US>XML</span>，它更加易读、更便于肉眼检查。在语法的层面上，<span lang=EN-US>JSON</span>与其他格式的区别是在于分隔数据的字符，<span lang=EN-US>JSON</span>中的分隔符限于单引号、小括号、中括号、大括号、冒号和逗号。下图是一个<span lang=EN-US>JSON</span>有效负载：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">{"addressbook": {"name": "Mary Lebow",<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>"address": {<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"street": "<st1:street w:st="on"><st1:address w:st="on">5 Main Street</st1:address></st1:street>"<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"city": "<st1:place w:st="on"><st1:city w:st="on">San Diego</st1:city>, <st1:state w:st="on">CA</st1:state></st1:place>",<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"zip": 91912,<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>},<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>"phoneNumbers": [<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"619 332-3452",<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"664 223-4667"<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>]<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;</span>}<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">}<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　将上面的<span lang=EN-US>JSON</span>有效负载用<span lang=EN-US>XML</span>改写，如下：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">&lt;addressbook&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;</span>&lt;name&gt;Mary Lebow&lt;/name&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;</span>&lt;address&gt; <o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>&lt;street&gt;<st1:street w:st="on"><st1:address w:st="on">5 Main Street</st1:address></st1:street>&lt;/street&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>&lt;city zip="91912"&gt; <st1:place w:st="on"><st1:city w:st="on">San Diego</st1:city>, <st1:state w:st="on">CA</st1:state></st1:place> &lt;/city&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>&lt;phoneNumbers&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;phone&gt;619 332-3452&lt;/phone&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;phone&gt;664 223-4667&lt;/phone&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>&lt;/phoneNumbers&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><span style="mso-spacerun: yes">&nbsp;</span>&lt;/address&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">&lt;/addressbook&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　是不是很相似？但它们并不相同。下面将详细阐述采用<span lang=EN-US>JSON</span>句法的优点和不足。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">优点<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　乍看上去，使用<span lang=EN-US>JSON</span>的数据分隔符的优点可能并不那么明显，但存在一个根本性的缘由：它们简化了数据访问。使用这些数据分隔符时，<span lang=EN-US> JavaScript</span>引擎对数据结构（如字符串、数组、对象）的内部表示恰好与这些符号相同。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　这将开创一条比<span lang=EN-US>DOM</span>技术更为便捷的数据访问途径。下面列举几个<span lang=EN-US>JavaScript</span>代码片段来说明这一过程，这些代码片段会访问先前的<span lang=EN-US>JSON</span>代码片段中的信息：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">&#8226;<span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span></span>访问<span lang=EN-US>JSON</span>中的名称：<span lang=EN-US> addressbook.name <o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">&#8226;<span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span></span>访问<span lang=EN-US>JSON</span>中的地址：<span lang=EN-US> addressbook.address.street <o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">&#8226;<span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp; </span></span>访问<span lang=EN-US>JSON</span>中的电话号码第一位：<span lang=EN-US>addressbook.address.phoneNumbers[0] <o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　如果您具备<span lang=EN-US>DOM</span>编程经验，就能很快地看出区别；新手可以参看<span lang=EN-US> Document Object Model </span>的这一外部资源，这里提供了关于数据导航的实例。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　<span lang=EN-US>JSON</span>的另一个优点是它的非冗长性。在<span lang=EN-US>XML</span>中，打开和关闭标记是必需的，这样才能满足标记的依从性；而在<span lang=EN-US>JSON</span>中，所有这些要求只需通过一个简单的括号即可满足。在包含有数以百计字段的数据交换中，传统的<span lang=EN-US>XML</span>标记将会延长数据交换时间。目前还没有正式的研究表明<span lang=EN-US>JSON</span>比<span lang=EN-US>XML</span>有更高的线上传输效率；人们只是通过简单的字节数比较发现，对于等效的<span lang=EN-US>JSON</span>和<span lang=EN-US>XML</span>有效负载，前者总是小于后者。至于它们之间的差距有多大，特别是在新的<span lang=EN-US>XML</span>压缩格式下它们的差距有多大，有待进一步的研究。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　此外，<span lang=EN-US>JSON</span>受到了擅长不同编程语言的开发人员的青睐。这是因为无论在<span lang=EN-US>Haskell</span>中或<span lang=EN-US> Lisp</span>中，还是在更为主流的<span lang=EN-US>C#</span>和<span lang=EN-US>PHP</span>中，开发都可以方便地生成<span lang=EN-US>JSON</span>（详见 参考资料）。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">不足<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　和许多好东西都具有两面性一样，<span lang=EN-US>JSON</span>的非冗长性也不例外，为此<span lang=EN-US>JSON</span>丢失了<span lang=EN-US>XML</span>具有的一些特性。命名空间允许不同上下文中的相同的信息段彼此混合，然而，显然在<span lang=EN-US>JSON</span>中已经找不到了命名空间。<span lang=EN-US>JSON</span>与<span lang=EN-US>XML</span>的另一个差别是属性的差异，由于<span lang=EN-US>JSON</span>采用冒号赋值，这将导致当<span lang=EN-US>XML</span>转化为<span lang=EN-US>JSON</span>时，在标识符（<span lang=EN-US>XML CDATA</span>）与实际属性值之间很难区分谁应该被当作文本考虑。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial">　　另外，<span lang=EN-US>JSON</span>片段的创建和验证过程比一般的<span lang=EN-US>XML</span>稍显复杂。从这一点来看，<span lang=EN-US>XML</span>在开发工具方面领先于<span lang=EN-US>JSON</span>。尽管如此，为了消除您对这一领域可能存在的困惑，下节将介绍一些最为成熟的<span lang=EN-US>JSON</span>开发<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><o:p></o:p></span></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/91440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-28 11:48 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/28/91440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从 XML 生成可与 Ajax 共同使用的 JSON</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91439.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Tue, 28 Jul 2009 03:44:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91439.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91439.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91439.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91439.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 2006 年 6 月 12 日时下，非常流行使用 JavaScript 代码为数据驱动的 Web 应用程序添加互动性。若能将数据编码成 JavaScript Object Notation（JSON）的格式，您就可以更轻松地通过 JavaScript 语言使用它。通过本文，发掘使用 XSLT V2 从 XML 数据生成 JSON 的几种不同方法。                ...&nbsp;&nbsp;<a href='http://www.cppblog.com/woaidongmao/archive/2009/07/28/91439.html'>阅读全文</a><img src ="http://www.cppblog.com/woaidongmao/aggbug/91439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-28 11:44 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/28/91439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用 JSON 处理缓存</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91438.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Tue, 28 Jul 2009 03:41:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91438.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91438.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91438.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91438.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 2006 年 11 月 07 日数据验证是每个企业 Web 应用程序中最富于挑战性、日新月异的部分。通常验证元数据会使 JavaScript 模块中混入服务器端代码。在本文中，您将了解如何在服务器代码的帮助下将元数据缓存在客户端的优秀方法，服务器代码将提供 JSON（JavaScript Object Notation）形式的字符串化元数据。这种方法还允许以类似 Ajax 的方式来处理多值和多...&nbsp;&nbsp;<a href='http://www.cppblog.com/woaidongmao/archive/2009/07/28/91438.html'>阅读全文</a><img src ="http://www.cppblog.com/woaidongmao/aggbug/91438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-28 11:41 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/28/91438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSON 入门指南</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91436.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Tue, 28 Jul 2009 03:37:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91436.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91436.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91436.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91436.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91436.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 级别： 初级廖 雪峰, 撰稿人2008 年 8 月 22 日JSON 即 JavaScript Object Natation，它是一种轻量级的数据交换格式，非常适合于服务器与 JavaScript 的交互。本文将快速讲解 JSON 格式，并通过代码示例演示如何分别在客户端和服务器端进行 JSON 格式数据的处理。 尽管有许多宣传关于 XML 如何拥有跨平台，跨语言的优势，然而，除...&nbsp;&nbsp;<a href='http://www.cppblog.com/woaidongmao/archive/2009/07/28/91436.html'>阅读全文</a><img src ="http://www.cppblog.com/woaidongmao/aggbug/91436.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-28 11:37 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/28/91436.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex与JSON及XML的互操作</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91435.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Tue, 28 Jul 2009 03:33:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91435.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91435.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91435.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91435.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91435.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Flex之于Java，就像美丽之于大脑，或者还有别的说法？谁能告诉我？我所知道的是，Flex和Java真的是能配合得很好，能创建出难以置信的富 Internet应用（RIA）。你会问Flex是什么？Flex是一个开源框架，你可以通过基于标签的MXML语言（以及ActionScript 3）来构建Flash应用。相关 请观看：Jack有关Flex与JSON及XML互操作的演讲 （QuickT...&nbsp;&nbsp;<a href='http://www.cppblog.com/woaidongmao/archive/2009/07/28/91435.html'>阅读全文</a><img src ="http://www.cppblog.com/woaidongmao/aggbug/91435.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-28 11:33 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/28/91435.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax中使用JSON</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91433.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Tue, 28 Jul 2009 03:28:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91433.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91433.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91433.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91433.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91433.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 6pt 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">提交数据使用<span lang=EN-US>json</span>代替<span lang=EN-US>xml<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 6pt 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp; </span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">页面：<span lang=EN-US>jsonExample.jsp<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 6pt 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;%@ page contentType="text/html; charset=GBK" %&gt;<br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt;<br>JSON</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">示例<span lang=EN-US><br>&lt;/title&gt;<br>&lt;script type="text/javascript" src="zxml.src.js"&gt;&lt;/script&gt;<br>&lt;script type="text/javascript" src="json.js"&gt;&lt;/script&gt;<br>&lt;script type="text/javascript"&gt;<br>var xmlHttp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span>创建对象<span lang=EN-US><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function createXMLHttpRequest(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlHttp = zXmlHttp.createRequest();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function doJSON(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span>得到<span lang=EN-US>Car</span>对象<span lang=EN-US><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var car = getCarObject();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span>用<span lang=EN-US>JSON</span>字符串化<span lang=EN-US>car</span>对象<span lang=EN-US><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var carAsJSON = car.toJSONString();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("</span>汽车对象<span lang=EN-US>JSON</span>化为<span lang=EN-US>:\n" + carAsJSON);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var url = "JSONExample?timeStamp=" + new Date().getTime();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span>创建对象<span lang=EN-US><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; createXMLHttpRequest();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlHttp.open("POST",url,true);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlHttp.onreadystatechange = handleStateChange;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlHttp.setRequestHeader("Content-Type","application/x-www-form.urlencoded");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlHttp.send(carAsJSON);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span>回调方法<span lang=EN-US><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function handleStateChange(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (xmlHttp.readyState == 4){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (xmlHttp.status == 200){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parseResults();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span>解析结果<span lang=EN-US><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function parseResults(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var responseDiv = document.getElementById("serverResponse");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (responseDiv.hasChildNodes()){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; responseDiv.removeChild(responseDiv.childNode[0]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var responseText = document.createTextNode(xmlHttp.responseText);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; responseDiv.appendChild(responseText);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span>得到<span lang=EN-US>Car</span>对象<span lang=EN-US><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function getCarObject(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new Car("Dodge","Coronet R/T",1968,"yellow");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Car</span>构造函数<span lang=EN-US><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function Car(make,model,year,color){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.make = make;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.model = model;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.year = year;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.color = color;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&lt;/script&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;br /&gt;&lt;br /&gt;<br>&lt;form action="#"&gt;<br>&nbsp; &lt;input type="button" value="</span>发送<span lang=EN-US>JSON</span>数据<span lang=EN-US>" onclick="doJSON();"/&gt;<br>&lt;/form&gt;<br>&lt;h2&gt;<br>&nbsp; </span>服务器响应：<span lang=EN-US><br>&lt;/h2&gt;<br>&lt;div id="serverResponse"&gt;<br>&lt;/div&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 6pt 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp; </span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">服务器：<span lang=EN-US>JSONExample.java<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 6pt 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">package ajaxbook.chap4;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 6pt 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">import java.io.*;<br>import java.net.*;<br>import java.text.ParseException;<br>import javax.servlet.*;<br>import javax.servlet.http.*;<br>import org.json.JSONObject;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 6pt 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">public class JSONExample<br>&nbsp;&nbsp;&nbsp; extends HttpServlet {<br>&nbsp; //</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">处理<span lang=EN-US>Post</span>方法<span lang=EN-US><br>&nbsp; protected void doPost(HttpServletRequest request,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletResponse response) throws ServletException,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IOException {<br>&nbsp;&nbsp;&nbsp; String json = readJSONStringFromRequestBody(request);<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 6pt 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp; //</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">使用<span lang=EN-US>JSON</span>绑字<span lang=EN-US>Ajax</span>对象<span lang=EN-US><br>&nbsp;&nbsp;&nbsp; JSONObject jsonObject = null;<br>&nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jsonObject = new JSONObject(json);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; catch (ParseException pe) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("ParseException: " + pe.toString());<br>&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 6pt 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp; //</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">返回输出结果<span lang=EN-US><br>&nbsp;&nbsp;&nbsp; String responseText = "You have a " + jsonObject.getInt("year") + " "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + jsonObject.getString("make") + " " + jsonObject.getString("model")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + " " + " that is " + jsonObject.getString("color") + " in color.";<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 6pt 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp; response.setContentType("text/xml");<br>&nbsp;&nbsp;&nbsp; response.getWriter().print(responseText);<br>&nbsp; }<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 6pt 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp; //</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">得到参数<span lang=EN-US><br>&nbsp; private String readJSONStringFromRequestBody(HttpServletRequest request) {<br>&nbsp;&nbsp;&nbsp; StringBuffer json = new StringBuffer();<br>&nbsp;&nbsp;&nbsp; String line = null;<br>&nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedReader reader = request.getReader();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ( (line = reader.readLine()) != null) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; json.append(line);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; catch (Exception e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Error reading JSON string: " + e.toString());<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return json.toString();<br>&nbsp; }<br>}<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 6pt 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">注意：要引入<span lang=EN-US>json.js</span>和<span lang=EN-US>json</span>的源文件，使用<span lang=EN-US>json.jar</span>不行，源文件参见书籍源代码第三章<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 6pt 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">参考：<span lang=EN-US>Ajax</span>基础教程<span lang=EN-US>&nbsp; </span>作笔记吧<span lang=EN-US>&nbsp;<o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/91433.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-28 11:28 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/28/91433.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用 jquery + json 实现ajax的方法</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91432.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Tue, 28 Jul 2009 03:25:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91432.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91432.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91432.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91432.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91432.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp; 在使用Jquery + json 的过程中由于一个小问题没有注意到，程序一直有错误。在网上找了很多JSON方面的文章但基本都是很简单的举例，所以我觉得有必要写一个完整的JQuery + json 实现AJAX的例子，如果可以帮到别人那是最好，否则就当是给自己备忘了吧。&nbsp;&nbsp;&nbsp;&nbsp; 好啦，进入正题吧。&nb...&nbsp;&nbsp;<a href='http://www.cppblog.com/woaidongmao/archive/2009/07/28/91432.html'>阅读全文</a><img src ="http://www.cppblog.com/woaidongmao/aggbug/91432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-28 11:25 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/28/91432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>详谈基于JSON的高级AJAX开发技术</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91431.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Tue, 28 Jul 2009 03:21:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91431.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91431.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91431.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91431.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91431.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">一、引言 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">毫无疑问，<span lang=EN-US>AJAX</span>已经成为当今<span lang=EN-US>Web</span>开发中一种强有力的用户交互技术，但是它的许多可能性应用仍然鲜为人知。在本文中，我们将来共同探讨如何使用<span lang=EN-US>JavaScript</span>对象标志<span lang=EN-US>(JSON)</span>和<span lang=EN-US>JSON</span>分析器在服务器和客户端<span lang=EN-US>AJAX</span>引擎之间创建复杂而强有力的<span lang=EN-US>JSON</span>数据传输层。我们将详细讨论如何创建一组对象<span lang=EN-US>(</span>在其它语言中经常被当作一个包<span lang=EN-US>)</span>，如何把这些对象串行化为<span lang=EN-US>JSON</span>以发送到服务器端，以及如何把服务器端<span lang=EN-US>JSON</span>反串行化为客户端<span lang=EN-US>JavaScript</span>对象。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">提示：你可以在<span lang=EN-US>Douglas Crockford</span>的网站上找到本文中使用的<span lang=EN-US>JSON</span>分析器。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">在继续阅读前，本文假定你已经掌握了<span lang=EN-US>JavaScript</span>技术并且了解如何创建一个基本的<span lang=EN-US>AJAX</span>引擎，并经由<span lang=EN-US>AJAX</span>技术向服务器端发出请求和从服务器端接收响应。为了更好地理解本文中示例，你需要下载本文相应的源码文件。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">二、开始 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">为了进一步抽象我们的<span lang=EN-US>AJAX</span>请求并有助于我们以后在不同的应用程序间共享<span lang=EN-US>AJAX</span>引擎代码，本文使用了一个我自己创建的<span lang=EN-US>AJAX</span>引擎。为了使用这个引擎，我们简单地导入三个<span lang=EN-US>JavaScript</span>文件并且向一个名为<span lang=EN-US>AjaxUpdater</span>的对象发出请求。然后，由该引擎来负责处理其它任务，包括把响应代理到在该请求中指定的回调方法中。下面的示例展示了我们如何使用这个引擎发出请求以及导入相关的文件： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">以下是引用片段： <span lang=EN-US><o:p></o:p></span></span></p>
<div align=left>
<table class=MsoNormalTable style="WIDTH: 300pt; mso-cellspacing: 0cm; mso-padding-alt: 1.5pt 1.5pt 1.5pt 1.5pt" cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
            <td style="PADDING-RIGHT: 1.5pt; PADDING-LEFT: 1.5pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 1.5pt; PADDING-TOP: 1.5pt">
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>script type="text/javascript"src="javascript/model/Ajax.js"</span>＞＜<span lang=EN-US>/script</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>script type="text/javascript" src="javascript/model/HTTP.js"</span>＞＜<span lang=EN-US>/script</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>script type="text/javascript" src="javascript/model/AjaxUpdater.js"</span>＞＜<span lang=EN-US>/script</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>script type="text/javascript"</span>＞<span lang=EN-US> document.load = AjaxUpdater.Update(&#8217;GET&#8217;</span>，<span lang=EN-US> URL</span>，<span lang=EN-US> callback); <o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>/script</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">首先，让我们来讨论<span lang=EN-US>JavaScript</span>对象。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">三、<span lang=EN-US>JavaScript</span>对象 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><font color=#ff0000><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">JavaScript</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">以前经常被误解，似乎它主要用于实现客户浏览器端图形效果。其实，<span lang=EN-US>JavaScript</span>是一种强有力的语言，特别当它与<span lang=EN-US>AJAX</span>以及一个应用程序的服务器端相结合时<span lang=EN-US>;</span>但是，即使在客户端，<span lang=EN-US>JavaScript</span>也能够实现远比你预料得多的多的功能。<font color=#ff0000>面向对象的<span lang=EN-US>JavaScript</span>就是一个示例，它能够使我们创建对象，扩展内在对象，甚至能够把我们的对象创建成包以达到更容易的管理之目的。 <span lang=EN-US><o:p></o:p></span></font></span></font></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><font color=#ff0000>在本文示例中，我们将创建三个对象：<span lang=EN-US>Auto</span>，<span lang=EN-US>Car</span>和<span lang=EN-US>Wheel</span>。其中，每一个都是简单的对象<span lang=EN-US>;</span>在此，我们仅使用它们来展示如何创建一个基本包。 <span lang=EN-US><o:p></o:p></span></font></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">首先，<span lang=EN-US>Auto</span>对象被声明为一个新的对象： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">以下是引用片段： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">var Auto = new Object(); <o:p></o:p></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">注意，这个<span lang=EN-US>Auto</span>对象将用作<span lang=EN-US>Car</span>对象的父类。因此，<span lang=EN-US>Car</span>对象将成为<span lang=EN-US>Auto</span>对象的一个属性，只不过它被分离到另一个文件中以更易于管理<span lang=EN-US>(</span>这个概念经常被用于其它面向对象的语言中，但是在<span lang=EN-US>JavaScript</span>中却并不经常提起它<span lang=EN-US>)</span>。下面是这个<span lang=EN-US>Car</span>对象相应的代码： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">以下是引用片段： <span lang=EN-US><o:p></o:p></span></span></p>
<div align=left>
<table class=MsoNormalTable style="WIDTH: 300pt; mso-cellspacing: 0cm; mso-padding-alt: 1.5pt 1.5pt 1.5pt 1.5pt" cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
            <td style="PADDING-RIGHT: 1.5pt; PADDING-LEFT: 1.5pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 1.5pt; PADDING-TOP: 1.5pt">
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　<span lang=EN-US>Auto.Car = new Object(); <o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>Auto.Car.color = "#fff"; <o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>Auto.Car.setColor = function(_color)<o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>{<o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>Auto.Car.color = _color; <o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>}<o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>Auto.Car.setColor("#333");<o:p></o:p></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">如你所见，该<span lang=EN-US>Car</span>对象是<span lang=EN-US>Auto</span>对象的一个子对象<span lang=EN-US>—</span>这分明是一种类对象层次结构。这个对象有一个名为<span lang=EN-US>color</span>的属性和一个用于设置它的方法。在此，我们把<span lang=EN-US>color</span>属性设置为灰色以覆盖掉缺省的白色。当在后面我们串行化该对象时请牢记住这个事实。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">下一个对象，<span lang=EN-US>Wheel</span>，是<span lang=EN-US>Car</span>的一个子对象： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">以下是引用片段： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Auto.Car.Wheel = new Object(); <o:p></o:p></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Auto.Car.Wheel.color = "#000"; <o:p></o:p></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">在此，<span lang=EN-US>Wheel</span>是一个基本对象，但是它展示了对象层次中的又一个层。这个对象有一个称为<span lang=EN-US>color</span>的缺省值为黑色<span lang=EN-US>(&#8220;#000&#8221;)</span>的属性。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">下面，让我们来分析一下为什么这些对象如此重要以及我们是如何使用它们提供的简单的属性的。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">四、把<span lang=EN-US>JavaScript</span>对象串行化为<span lang=EN-US>JSON <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">借助于<span lang=EN-US>JSON</span>分析器，我们可以很容易地把刚才创建的<span lang=EN-US>JavaScript</span>对象串行化为<span lang=EN-US>JSON</span>。首先，我们需要下载该分析器的一个副本，并且要把它添加到文档中。下面是我在本文示例中用于导入该脚本的相应的代码： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">以下是引用片段： <span lang=EN-US><o:p></o:p></span></span></p>
<div align=left>
<table class=MsoNormalTable style="WIDTH: 300pt; mso-cellspacing: 0cm; mso-padding-alt: 1.5pt 1.5pt 1.5pt 1.5pt" cellSpacing=0 cellPadding=0 width=601 border=1>
    <tbody>
        <tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
            <td style="PADDING-RIGHT: 1.5pt; PADDING-LEFT: 1.5pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 1.5pt; PADDING-TOP: 1.5pt" width=599>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>script type="text/javascript" src="javascript/utils/jsonparser.js"</span>＞＜<span lang=EN-US>/script</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">我已经把该分析器添加到我的<span lang=EN-US>javascript</span>目录，即一个称为<span lang=EN-US>utils</span>的子目录下。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">下面是最终的包括到其中用于导入适当的<span lang=EN-US>JavaScript</span>文件的代码片断： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">以下是引用片段： <span lang=EN-US><o:p></o:p></span></span></p>
<div align=left>
<table class=MsoNormalTable style="WIDTH: 300pt; mso-cellspacing: 0cm; mso-padding-alt: 1.5pt 1.5pt 1.5pt 1.5pt" cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
            <td style="PADDING-RIGHT: 1.5pt; PADDING-LEFT: 1.5pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 1.5pt; PADDING-TOP: 1.5pt">
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>script type="text/javascript" src="javascript/Auto.js"</span>＞＜<span lang=EN-US>/script</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>script type="text/javascript" src="javascript/Car.js"</span>＞＜<span lang=EN-US>/script</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>script type="text/javascript" src="javascript/Wheel.js"</span>＞＜<span lang=EN-US>/script</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>script type="text/javascript" src="javascript/utils/jsonparser.js"</span>＞＜<span lang=EN-US>/script</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>script type="text/javascript" src="javascript/model/Ajax.js"</span>＞＜<span lang=EN-US>/script</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>script type="text/javascript" src="javascript/model/HTTP.js"</span>＞＜<span lang=EN-US>/script</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>script type="text/javascript" src="javascript/model/AjaxUpdater.js"</span>＞＜<span lang=EN-US>/script</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">在导入适当的文件后，我们可以通过把两个<span lang=EN-US>div</span>元素和一个<span lang=EN-US>onload</span>事件简单地添加到<span lang=EN-US>HTML</span>文档中开始串行化。这两个<span lang=EN-US>div</span>元素将分别拥有<span lang=EN-US>ID</span>：<span lang=EN-US>body</span>和<span lang=EN-US>loading</span>。其中，这个<span lang=EN-US>loading</span>标签将由<span lang=EN-US>AJAX</span>引擎使用来指示进度情况，而<span lang=EN-US>body</span>标签将用于显示消息。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">以下是引用片段： <span lang=EN-US><o:p></o:p></span></span></p>
<div align=left>
<table class=MsoNormalTable style="WIDTH: 300pt; mso-cellspacing: 0cm; mso-padding-alt: 1.5pt 1.5pt 1.5pt 1.5pt" cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
            <td style="PADDING-RIGHT: 1.5pt; PADDING-LEFT: 1.5pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 1.5pt; PADDING-TOP: 1.5pt">
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>div id="loading"</span>＞＜<span lang=EN-US>/div</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>div id="body"</span>＞＜<span lang=EN-US>/div</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">onload</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">事件相应于<span lang=EN-US>body</span>元素并且设置它的<span lang=EN-US>innerHTML</span>属性为<span lang=EN-US>JavaScript</span>对象<span lang=EN-US>(</span>作为一个串行化的<span lang=EN-US>JSON</span>字符串<span lang=EN-US>)</span>。为了实现这一目的，我在<span lang=EN-US>Auto</span>对象上使用了<span lang=EN-US>jsonparser.js</span>文件内的<span lang=EN-US>toJSONString</span>方法： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">以下是引用片段： <span lang=EN-US><o:p></o:p></span></span></p>
<div align=left>
<table class=MsoNormalTable style="WIDTH: 300pt; mso-cellspacing: 0cm; mso-padding-alt: 1.5pt 1.5pt 1.5pt 1.5pt" cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
            <td style="PADDING-RIGHT: 1.5pt; PADDING-LEFT: 1.5pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 1.5pt; PADDING-TOP: 1.5pt">
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>body onload="document.getElementById(&#8217;body&#8217;).innerHTML =<o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-spacerun: yes">&nbsp;</span>&#8217;</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>b</span>＞<span lang=EN-US>Local objects serialized as JSON</span>＜<span lang=EN-US>/b</span>＞<span lang=EN-US>Auto Object: &#8217;<o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">+ Auto.toJSONString();"</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＞<span lang=EN-US><o:p></o:p></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">这段代码使用了<span lang=EN-US>Auto</span>对象及其所有的子对象，并且使用<span lang=EN-US>JSON</span>分析器的<span lang=EN-US>toJSONString</span>方法把它们串行化为一个<span lang=EN-US>JSON</span>字符串。然后，该数据可以被用作服务器端的一种数据交换格式。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">你可能还记得，在前面我们曾调用了一个称为<span lang=EN-US>setColor</span>的方法来改变<span lang=EN-US>Car</span>对象的颜色。当时，我使用它是因为我想向你展示串行化能够在运行时刻的任何点上实现，而且还为了反映出对象中最新的数据。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">如果你仔细分析一下<span lang=EN-US>onload</span>事件，你会注意到，<span lang=EN-US>Car</span>和<span lang=EN-US>Wheel</span>对象都包装在方括号内，这些方括号代表了父对象<span lang=EN-US>(</span>即<span lang=EN-US>Auto)</span>。这意味着，该串行化的<span lang=EN-US>JavaScript</span>对象能够在运行时刻被发送到服务器端以存储最新的数据，并且也可以在应用程序启动时从服务器端进行接收以便从数据库中检索多数的当前数据。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">最精彩的部分在于，为了创建一种<span lang=EN-US>&#8220;</span>无缝<span lang=EN-US>&#8221;</span>的过程，所有与服务器之间实现的数据交换都可以使用<span lang=EN-US>JSON</span>技术来实现。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">下面，让我们来看一下相同的数据是如何从服务器端接收的，以及它们是如何被使用最新的数据<span lang=EN-US>(</span>典型地，来源于一个数据库<span lang=EN-US>)</span>串行化为客户端<span lang=EN-US>JavaScript</span>对象的。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">五、把<span lang=EN-US>JSON</span>反串行化为客户端<span lang=EN-US>JavaScript</span>对象 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">在本文中，我简单地把一个静态文件创建为<span lang=EN-US>JSON</span>响应，但是在实际开发中，你可以把这些数据存储在一个数据库中并且使用一种服务器端语言返回它。基于这一能力，我们就可以轻松地创建一种强有力的数据交换过程<span lang=EN-US>!</span>在前面，我们已经分析了这一串行化过程。凭基本的<span lang=EN-US>AJAX</span>体验，你应该能够理解数据是如何被寄送到服务器端的。现在，让我们着手讨论反串行化的问题。首先来看一个针对本文示例提供的静态<span lang=EN-US>JSON</span>文件。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">这个文件其实是我们在上一节中串行化的数据： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">以下是引用片段： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">{"Car":{"color":"#333"</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">，<span lang=EN-US>"Wheel":{"color":"#000"}}} <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">作为一个请求<span lang=EN-US>JSON</span>文件的示例，当我们点击下列链接时将请求这个串行化的<span lang=EN-US>Auto</span>对象： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">以下是引用片段： <span lang=EN-US><o:p></o:p></span></span></p>
<div align=left>
<table class=MsoNormalTable style="WIDTH: 300pt; mso-cellspacing: 0cm; mso-padding-alt: 1.5pt 1.5pt 1.5pt 1.5pt" cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
            <td style="PADDING-RIGHT: 1.5pt; PADDING-LEFT: 1.5pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 1.5pt; PADDING-TOP: 1.5pt">
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>a href="javascript:AjaxUpdater.Update<o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">(&#8217;GET&#8217;</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">，<span lang=EN-US> &#8217;json/data.js&#8217;</span>，<span lang=EN-US> displayResponse);"</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Get remote JSON</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>/a</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">一旦接收到响应消息，我们的称为<span lang=EN-US>displayResponse</span>回调方法就会被激活，然后，我们就能够反串行化并开始使用这些对象： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">以下是引用片段： <span lang=EN-US><o:p></o:p></span></span></p>
<div align=left>
<table class=MsoNormalTable style="WIDTH: 300pt; mso-cellspacing: 0cm; mso-padding-alt: 1.5pt 1.5pt 1.5pt 1.5pt" cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
            <td style="PADDING-RIGHT: 1.5pt; PADDING-LEFT: 1.5pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 1.5pt; PADDING-TOP: 1.5pt">
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>script type="text/javascript"</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">function displayResponse() {<o:p></o:p></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　<span lang=EN-US>if(Ajax.checkReadyState(&#8217;loading&#8217;) == "OK") <o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　<span lang=EN-US>{<o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>var Auto = Ajax.request.responseText.parseJSON(); <o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>document.getElementById("body").innerHTML += <o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">" </span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>b</span>＞<span lang=EN-US>Remote JSON unserialized</span>＜<span lang=EN-US>/b</span>＞<span lang=EN-US>";<o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-spacerun: yes">&nbsp;</span>document.getElementById("body").innerHTML += <o:p></o:p></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">" Car color: "+Auto.Car.color; <o:p></o:p></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　<span lang=EN-US>document.getElementById("body").innerHTML +=<o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-spacerun: yes">&nbsp;</span>" Wheel color: "+Auto.Car.Wheel.color; <o:p></o:p></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　<span lang=EN-US>}<o:p></o:p></span></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">}<o:p></o:p></span></p>
            <p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">＜<span lang=EN-US>/script</span>＞<span lang=EN-US><o:p></o:p></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p class=MsoNormal style="TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">这是相当激动人心的一部分<span lang=EN-US>!</span>一旦我们拥有了该<span lang=EN-US>responseText</span>，我们就能够简单地使用<span lang=EN-US>JSON</span>分析器中的<span lang=EN-US>parseJSON</span>方法来从串行化的数据中重建我们的<span lang=EN-US>Auto</span>对象。借助于这个新的<span lang=EN-US>Auto</span>对象，我们就可以调用相应的子对象。这个特征允许我们在服务器和客户端来回发送对象<span lang=EN-US>—</span>而不必进行大量的分析工作，然而在以前标准的<span lang=EN-US>XML</span>响应情况下我们将却必须这样做。这样以来，我们就可以创建出能够基于<span lang=EN-US>AJAX</span>技术来保留自身状态的客户端<span lang=EN-US>JavaScript</span>对象。（<span lang=EN-US>T007</span>） <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/91431.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-28 11:21 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/28/91431.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用JSON实现代码分离</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91425.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Tue, 28 Jul 2009 02:51:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91425.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91425.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91425.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91425.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91425.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在学习JSON之前，当我在写大量JSP页面的时候，产生动态数据一般采用两种途径: 1.直接在页面中写java代码 2 采用各种标签代替 这两种用法的支持者都很多,但是我发现就算是采用标签也好,对于页面的重用还是无能为力,比如有几个页面都需要用到一个item数据，一个是管理用户页面，一个是订单页面。我们既要在管理用户的servlet写上setAttribute('item',item),也要在管理订...&nbsp;&nbsp;<a href='http://www.cppblog.com/woaidongmao/archive/2009/07/28/91425.html'>阅读全文</a><img src ="http://www.cppblog.com/woaidongmao/aggbug/91425.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-28 10:51 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/28/91425.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用javascript处理JSON</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91423.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Tue, 28 Jul 2009 02:48:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91423.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91423.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/28/91423.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91423.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91423.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">因为<span lang=EN-US>JSON </span>是<span lang=EN-US> javascript </span>的一个子集，所以，在<span lang=EN-US>javascript </span>中使用<span lang=EN-US>JSON</span>是非常简单的。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">js </span><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">代码<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">&nbsp;<o:p></o:p></span></p>
<ol type=1>
    <li class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span class=keyword><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">var</span></span><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"> myJSONObject = {<span class=string>"bindings"</span>: [&nbsp;&nbsp; <o:p></o:p></span>
    <li class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<span class=string>"ircEvent"</span>: <span class=string>"PRIVMSG"</span>, <span class=string>"method"</span>: <span class=string>"newURI"</span>, <span class=string>"regex"</span>: <span class=string>"^http://.*"</span>},&nbsp;&nbsp; <o:p></o:p></span>
    <li class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<span class=string>"ircEvent"</span>: <span class=string>"PRIVMSG"</span>, <span class=string>"method"</span>: <span class=string>"deleteURI"</span>, <span class=string>"regex"</span>: <span class=string>"^delete.*"</span>},&nbsp;&nbsp; <o:p></o:p></span>
    <li class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<span class=string>"ircEvent"</span>: <span class=string>"PRIVMSG"</span>, <span class=string>"method"</span>: <span class=string>"randomURI"</span>, <span class=string>"regex"</span>: <span class=string>"^random.*"</span>}&nbsp;&nbsp; <o:p></o:p></span>
    <li class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; ]&nbsp;&nbsp; <o:p></o:p></span>
    <li class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">};&nbsp;&nbsp; <o:p></o:p></span></li>
</ol>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><br></span><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">在上面的例子中，我们创建了只包含一个成员 <span class=string><span lang=EN-US>"bindings" </span></span>的一个对象，<span class=string><span lang=EN-US>bindings </span>则包含了一个由<span lang=EN-US>3</span>个对象组成的数组。这<span lang=EN-US>3</span>个对象都包含<span lang=EN-US>3</span>个成员：<span lang=EN-US>"ircEvent"</span>，</span> <span class=string><span lang=EN-US>"method"</span></span>，<span class=string><span lang=EN-US>"regex"</span>。</span><span lang=EN-US><br><br></span><span class=string>在<span lang=EN-US>javascript </span>中， 成员可以通过<span lang=EN-US>&#8220;</span>点号<span lang=EN-US>&#8221;</span>来获取。</span><span lang=EN-US><br></span><span class=string>比如：<span lang=EN-US><o:p></o:p></span></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">js </span><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">代码<span lang=EN-US><o:p></o:p></span></span></p>
<ol type=1>
    <li class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l4 level1 lfo2; tab-stops: list 36.0pt"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">myJSONObject.bindings[0].method&nbsp;&nbsp; <o:p></o:p></span></li>
</ol>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><br></span><span class=string><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">通过<span lang=EN-US>eval() </span>函数可以将<span lang=EN-US>JSON</span>字符串转化为对象。<span lang=EN-US><o:p></o:p></span></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">js </span><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">代码<span lang=EN-US><o:p></o:p></span></span></p>
<ol type=1>
    <li class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l3 level1 lfo3; tab-stops: list 36.0pt"><span class=keyword><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">var</span></span><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"> myObject = eval('(' + myJSONtext + ')');&nbsp;&nbsp; <o:p></o:p></span></li>
</ol>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><br><span class=string>eval </span></span><span class=string><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">函数非常快，但是它可以编译任何<span lang=EN-US> javascirpt </span>代码，这样的话就可能产生安全的问题。<span lang=EN-US>eval </span>的使用是基于传入的代码参数是可靠的假设的，有一些情况下，可能客户端是不可信任的。</span></span><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><br><br></span><span class=string><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">如果基于安全的考虑的话，最好是使用一个 </span></span><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">JSON </span><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">解析器。 一个<span class=string> </span><span lang=EN-US>JSON </span>解析器将只接受<span lang=EN-US> JSON </span>文本。所以是更安全的。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">js </span><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">代码<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">&nbsp;<o:p></o:p></span></p>
<ol type=1>
    <li class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo4; tab-stops: list 36.0pt"><span class=keyword><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">var</span></span><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"> myObject = JSON.parse(myJSONtext, filter);&nbsp;&nbsp; <o:p></o:p></span></li>
</ol>
<p class=MsoNormal style="MARGIN-BOTTOM: 12pt; LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><br></span><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">可选的<span lang=EN-US> filter </span>参数将遍历每一个<span lang=EN-US>value key </span>值对， 并进行相关的处理。如：<span class=string><span lang=EN-US><o:p></o:p></span></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">js </span><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">代码<span lang=EN-US><o:p></o:p></span></span></p>
<ol type=1>
    <li class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l5 level1 lfo5; tab-stops: list 36.0pt"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">myData = JSON.parse(text, <span class=keyword>function</span> (key, value) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span>
    <ol type=1>
        <li class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l5 level2 lfo5; tab-stops: list 72.0pt"><span class=keyword><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">return</span></span><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"> key.indexOf('date') &gt;= 0 ? <span class=keyword>new</span> Date(value) : value;&nbsp;&nbsp;&nbsp; });&nbsp; <o:p></o:p></span></li>
    </ol>
    </li>
</ol>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><br><span class=string>stringifier </span></span><span class=string><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">函数的作用跟<span lang=EN-US> parse </span>相反， 用来将一个<span lang=EN-US>js</span>对象转换为<span lang=EN-US> JSON </span>文本。<span lang=EN-US><o:p></o:p></span></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">js </span><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">代码<span lang=EN-US><o:p></o:p></span></span></p>
<ol type=1>
    <li class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo6; tab-stops: list 36.0pt"><span class=keyword><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">var</span></span><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"> myJSONText = JSON.stringifier(myObject);&nbsp;&nbsp; <o:p></o:p></span></li>
</ol>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><br></span><span class=string><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">这里是一个开源的 </span></span><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><a href="http://www.json.org/json2.js">JSON parser and JSON stringifier</a><o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">========<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">我也翻译过这篇文章<span lang=EN-US><a href="http://www.cppblog.com/images/cppblog_com/woaidongmao/WindowsLiveWriter/javascriptJSON_97F7/clip_image001_2.gif"><img title=clip_image001 style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=19 alt=clip_image001 src="http://www.cppblog.com/images/cppblog_com/woaidongmao/WindowsLiveWriter/javascriptJSON_97F7/clip_image001_thumb.gif" width=19 border=0 v:shapes="_x0000_i1025"></a> <br><br></span>我也用过<font color=#ff0000><span lang=EN-US> DOJO ,</span>现在改用<span lang=EN-US> jQuery</span>了</font>。</span><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><o:p></o:p></span></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/91423.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-28 10:48 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/28/91423.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>html读取xml静态翻页实例</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91338.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Mon, 27 Jul 2009 06:15:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91338.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91338.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91338.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91338.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91338.html</trackback:ping><description><![CDATA[<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"&gt;<br>&lt;html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>"&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;<br>&lt;title&gt;Ajax图片列表实例&lt;/title&gt;<br>&lt;meta name="Keywords" content="," /&gt;<br>&lt;meta name="Description" content="aaaaaaaaaaaaaaaaaaaaaa" /&gt;<br>&lt;style type="text/css"&gt;<br>&lt;!--<br>html, body, ul, ol, li, p, h1, h2, h3, h4, h5, h6, form, fieldset, table, td, img {margin: 0;padding: 0;border: 0;font-family:"宋体";}<br>select,input{vertical-align:middle;font-size:12px;}<br>textarea{font-size:12px;}<br>body {background: #FFF;color:#000; font-size:12px; text-align:center;margin:5px 0;}<br>ul,li{list-style:none;}<br>ul,p,ol{line-height:20px;}<br>img{border:0;}
<p>#wrap{width:750px;margin:0 auto;background:#FFF;text-align:left;}<br>/* main */<br>.MainCont{border:1px solid #b7b7b7;background:#fbfbfb;}
<p>.TopInfo{height:33px;padding-top:2px;line-height:33px;background:#fff;border-bottom:1px solid #f1f1f1;}<br>.TopInfo .Info{float:left;padding-left:20px;}<br>.TopInfo .Info strong{color:#c00;}<br>.TopInfo .PageList{float:right;color:#666;padding-right:16px;}
<p>.BotInfo{height:33px;padding-top:2px;line-height:33px;background:#fff;border-top:1px solid #f1f1f1;}<br>.BotInfo .Info{float:left;padding-left:20px;line-height:14px;padding-top:11px;}<br>.BotInfo .Info a:link,.BotInfo .Info a:visited{color:#333;text-decoration:none;}<br>.BotInfo .Info a:hover{color:#f00;text-decoration:underline;}<br>.BotInfo .Info img{vertical-align:middle;margin-right:3px;}<br>.BotInfo .PageList{float:right;color:#666;padding-right:16px;}<br>.PageList strong{color:#c00;}<br>.PageList a:link,.PageList a:visited{color:#0b0164;}<br>.PageList a:hover{color:#f00;}
<p>.Content{width:732px;margin:0 auto;}<br>.Content .Line_1{clear:both;display:inline-block;}<br>.Content .Line_2{clear:both;background:#f0f0f0;display:inline-block;}<br>.Content .box{width:183px;float:left;padding:16px 0 14px;overflow:hidden;}<br>.Content .box table td{width:183px;height:152px;text-align:center;}<br>.Content .box table td img{border:1px solid #000;}<br>.Content .box p{width:160px;margin:0 auto;text-align:center;padding-left:12px;line-height:14px;padding-top:10px;}<br>--&gt;<br>&lt;/style&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;div id="wrap"&gt;<br>&lt;!-- 主内容 begin --&gt;<br>&lt;div class="MainCont"&gt;<br>&lt;!-- 顶部信息 begin --&gt;<br>&lt;div class="TopInfo"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;div class="Info" id="TopInfo"&gt;数据读取中...&lt;/div&gt;<br>&nbsp;&nbsp;&nbsp; &lt;div class="PageList" id="TopPageList"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;&amp;lt;首页上页&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;1&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;下页末页&amp;gt;&amp;gt;<br>&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br>&lt;/div&gt;<br>&lt;!-- 顶部信息 end --&gt;
<p>&lt;!-- 图片内容 begin --&gt;<br>&lt;div class="Content" id="Content"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;div style="padding:100px 0;text-align:center;"&gt;数据读取中...&lt;/div&gt;<br>&lt;/div&gt;<br>&lt;!-- 图片内容 end --&gt;
<p>&lt;!-- 顶部信息 begin --&gt;<br>&lt;div class="BotInfo"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;div class="Info"&gt;&lt;a href="#"&gt;返回页顶&lt;/a&gt;&lt;/div&gt;<br>&nbsp;&nbsp;&nbsp; &lt;div class="PageList" id="BotPageList"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;&amp;lt;首页上页&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;1&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;下页末页&amp;gt;&amp;gt;<br>&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br>&lt;/div&gt;<br>&lt;!-- 顶部信息 end --&gt;<br>&lt;/div&gt;<br>&lt;!-- 主内容 end --&gt;<br>&lt;/div&gt;<br>&lt;script language="javascript" type="text/javascript"&gt;<br>&lt;!--//--&gt;&lt;![CDATA[//&gt;&lt;!--<br>// mengjia 070313<br>var ImmediateData = new Array();//数据<br>var PageSize = 20; //每页个数<br>var Page = 1; //当前页码
<p>getData("<a href="http://news.sina.com.cn/news/z/qglh2008/pic/0313.xml%22,analyzeData" href_cetemp='http://news.sina.com.cn/news/z/qglh2008/pic/0313.xml",analyzeData'>http://news.sina.com.cn/news/z/qglh2008/pic/0313.xml",analyzeData</a>); //读取数据 getData(url,处理方法)
<p>function GetObj(objName){<br>if(document.getElementById){<br>&nbsp;&nbsp;&nbsp; return eval('document.getElementById("' + objName + '")');<br>}else{<br>&nbsp;&nbsp;&nbsp; return eval('document.all.' + objName);<br>}<br>}
<p>//XML 数据读取部分<br>var XmlHttp;<br>function getData(url,funcName) {<br>if (window.XMLHttpRequest) {<br>&nbsp;&nbsp;&nbsp; XmlHttp = new XMLHttpRequest()<br>&nbsp;&nbsp;&nbsp;&nbsp; if (XmlHttp.overrideMimeType) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XmlHttp.overrideMimeType('text/xml');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; } else if (window.ActiveXObject) {<br>&nbsp;&nbsp;&nbsp; XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");<br>}
<p>XmlHttp.onreadystatechange = funcName;<br>XmlHttp.open("GET", url, true);<br>XmlHttp.send(null);<br>}<br>function analyzeData() { //数据xml处理程序<br>&nbsp;&nbsp;&nbsp; if (XmlHttp.readyState == 4) {<br>&nbsp;&nbsp;&nbsp;&nbsp; if (XmlHttp.status == 200) {<br>&nbsp;&nbsp;&nbsp;&nbsp; var xmldoc = XmlHttp.responseXML;<br>&nbsp;&nbsp;&nbsp;&nbsp; var datas=xmldoc.getElementsByTagName('data');<br>&nbsp;&nbsp;&nbsp;&nbsp; ImmediateData = new Array;<br>&nbsp;&nbsp;&nbsp;&nbsp; for(var iData = 0; iData &lt; datas.length; iData++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImmediateData.push(new Array(datas[iData].getAttribute("img"),datas[iData].getAttribute("title"),datas[iData].getAttribute("url")));<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; OutHtml();<br>&nbsp;&nbsp;&nbsp; }else{<br>&nbsp;&nbsp;&nbsp;&nbsp; alert('数据读取出错:\n\n' + XmlHttp.statusText + '');<br>&nbsp;&nbsp;&nbsp;&nbsp; OutoError();<br>&nbsp;&nbsp;&nbsp; }<br>}<br>}
<p>function GotoPage(num){ //跳转页<br>Page = num;<br>OutHtml();<br>}
<p>function OutoError(){ //显示失败状态<br>GetObj("TopInfo").innerHTML = '读取失败';<br>GetObj("Content").innerHTML = '&lt;div style="padding:100px 0;text-align:center;"&gt;读取失败&lt;/div&gt;';<br>}
<p>function OutHtml(){ //输出HTML<br>if(ImmediateData.length == 0){OutoError();return;}<br>var Pages = Math.floor((ImmediateData.length - 1) / PageSize) + 1;<br>if(Page &lt; 1)Page = 1;<br>if(Page &gt; Pages)Page = Pages;<br>var Temp = "";<br>var BeginNO = (Page - 1) * PageSize + 1; //开始编号<br>var EndNO = Page * PageSize; //结束编号<br>if(EndNO &gt; ImmediateData.length) EndNO = ImmediateData.length;<br>if(EndNO == 0) BeginNO = 0;
<p>if(!(Page &lt;= Pages)) Page = Pages;<br>GetObj("TopInfo").innerHTML = "共有&lt;strong&gt;" + ImmediateData.length + "&lt;/strong&gt;张图片&amp;nbsp;&amp;nbsp;当前显示 第" + BeginNO + "-" + EndNO + "篇";
<p>//分页<br>if(Page != 1){Temp =&nbsp;&nbsp;&nbsp; '&lt;a href="javascript:void(0)" onclick="GotoPage(1)"&gt;&amp;lt;&amp;lt;首页&lt;/a&gt; &lt;a href="javascript:void(0)" onclick="GotoPage(' + (Page - 1) + ')"&gt;上页&lt;/a&gt;&amp;nbsp;'}else{Temp = '&amp;lt;&amp;lt;首页上页&amp;nbsp;'};
<p>//完美的翻页列表 ：）<br>var PageFrontSum = 5; //当页前显示个数<br>var PageBackSum = 5; //当页后显示个数
<p>var PageFront = PageFrontSum - (Page - 1);<br>var PageBack = PageBackSum - (Pages - Page);<br>if(PageFront &gt; 0 &amp;&amp; PageBack &lt; 0)PageBackSum += PageFront; //前少后多，前剩余空位给后<br>if(PageBack &gt; 0 &amp;&amp; PageFront &lt; 0)PageFrontSum += PageBack; //后少前多，后剩余空位给前<br>var PageFrontBegin = Page - PageFrontSum;<br>if(PageFrontBegin &lt; 1)PageFrontBegin = 1;<br>var PageFrontEnd = Page + PageBackSum;<br>if(PageFrontEnd &gt; Pages)PageFrontEnd = Pages;
<p>if(PageFrontBegin != 1) Temp += '&lt;a href="javascript:void(0)" onclick="GotoPage(' + (Page - 10) + ')" title="前10页"&gt;..&lt;/a&gt;';<br>for(var i = PageFrontBegin;i &lt; Page;i ++){<br>&nbsp;&nbsp;&nbsp; Temp += ' &lt;a href="javascript:void(0)" onclick="GotoPage(' + i + ')"&gt;' + i + '&lt;/a&gt;';<br>}<br>Temp += ' &lt;strong&gt;' + Page + '&lt;/strong&gt;';<br>for(var i = Page + 1;i &lt;= PageFrontEnd;i ++){<br>&nbsp;&nbsp;&nbsp; Temp += ' &lt;a href="javascript:void(0)" onclick="GotoPage(' + i + ')"&gt;' + i + '&lt;/a&gt;';<br>}<br>if(PageFrontEnd != Pages) Temp += ' &lt;a href="javascript:void(0)" onclick="GotoPage(' + (Page + 10) + ')" title="后10页"&gt;..&lt;/a&gt;';
<p>if(Page != Pages){Temp += '&amp;nbsp;&amp;nbsp;&lt;a href="javascript:void(0)" onclick="GotoPage(' + (Page + 1) + ')"&gt;下页&lt;/a&gt; &lt;a href="javascript:void(0)" onclick="GotoPage(' + Pages + ')"&gt;末页&amp;gt;&amp;gt;&lt;/a&gt;'}else{Temp += '&amp;nbsp;&amp;nbsp;下页 末页&amp;gt;&amp;gt;'}
<p>GetObj("BotPageList").innerHTML = Temp;<br>GetObj("TopPageList").innerHTML = Temp;
<p>//图片数据<br>var line = 1;<br>var sum = 0;
<p>if(EndNO == 0){<br>&nbsp;&nbsp;&nbsp; GetObj("Content").innerHTML = '&lt;div style="padding:100px 0;text-align:center;"&gt;暂无图片&lt;/div&gt;';<br>&nbsp;&nbsp;&nbsp; return;<br>}<br>Temp = '&lt;div class="Line_' + line + '"&gt;\n';<br>for(var i = BeginNO - 1;i &lt; EndNO;i ++){<br>&nbsp;&nbsp;&nbsp; if(sum % 4 == 0 &amp;&amp; sum != 0){<br>&nbsp;&nbsp;&nbsp;&nbsp; line++;<br>&nbsp;&nbsp;&nbsp;&nbsp; line = line == 3?1:line;<br>&nbsp;&nbsp;&nbsp;&nbsp; Temp += '&lt;div class="clearit"&gt;&lt;/div&gt;\n&lt;/div&gt;\n&lt;div class="Line_' + line + '"&gt;\n';<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; Temp += '&lt;div class="box"&gt;\n';<br>&nbsp;&nbsp;&nbsp; Temp += '&lt;table cellspacing="0"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="' + ImmediateData[i][2] + '" target="_blank"&gt;&lt;img src="' + ImmediateData[i][0] + '" alt="' + ImmediateData[i][1] + '" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;\n';<br>&nbsp;&nbsp;&nbsp; Temp += ' &lt;p&gt;&lt;a href="' + ImmediateData[i][2] + '" target="_blank"&gt;' + ImmediateData[i][1] + '&lt;/a&gt;&lt;/p&gt;\n'<br>&nbsp;&nbsp;&nbsp; Temp += '&lt;/div&gt;\n'<br>&nbsp;&nbsp;&nbsp; sum ++;<br>}<br>Temp += '&lt;div class="clearit"&gt;&lt;/div&gt;\n&lt;/div&gt;\n';
<p>GetObj("Content").innerHTML = Temp;<br>if(navigator.appName == 'Microsoft Internet Explorer')setTimeout('ChrImg()',500);<br>}
<p>function ChrImg(){ //解决IE下图片渲染问题<br>var ImageArray = GetObj("Content").getElementsByTagName("img");<br>for(var i = 0;i &lt; ImageArray.length;i++){<br>&nbsp;&nbsp;&nbsp; if(!ImageArray[i].complete) ImageArray[i].src = ImageArray[i].src;<br>}<br>}
<p>//--&gt;&lt;!]]&gt;<br>&lt;/script&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;
<p>&nbsp;</p>
<p>效果</p>
<p><a href="http://www.cppblog.com/images/cppblog_com/woaidongmao/WindowsLiveWriter/htmlxml_C873/image_2.png"><img title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=468 alt=image src="http://www.cppblog.com/images/cppblog_com/woaidongmao/WindowsLiveWriter/htmlxml_C873/image_thumb.png" width=644 border=0></a></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/91338.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-27 14:15 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/27/91338.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据岛基本定义</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91336.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Mon, 27 Jul 2009 05:58:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91336.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91336.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91336.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91336.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91336.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="BACKGROUND: white; MARGIN-BOTTOM: 12pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XML</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">文件为数据的存储和传递提供了一个很好的媒介，可以这样认为<span lang=EN-US>XML</span>就是一个数据的集合，通过<span lang=EN-US>XML</span>文件对象可以对数据做任何的操作。关键是怎样使用<span lang=EN-US>XML</span>文件里的数据，在<span lang=EN-US>HTML</span>网页中是否可以引用<span lang=EN-US>XML</span>，网页中显示的数据来自<span lang=EN-US>XML</span>文件，而该数据显示的格式用<span lang=EN-US>HTML</span>的标记来指定。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">目前，许多动态<span lang=EN-US>Web</span>网站的内容数据都存放在数据库或数据文件中。如某个网站的会员信息，商品信息等。</span><span style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">对于<span lang=EN-US>Web</span>程序开发人员来说，如果要想把有用的信息从数据库中提取出来，传统的方法是在服务器端编写脚本程序（如<span lang=EN-US>VBScript</span>、<span lang=EN-US>JavaScript</span>、<span lang=EN-US>CGI</span>、<span lang=EN-US>ASP</span>、<span lang=EN-US>Perl</span>、<span lang=EN-US>JSP</span>等等），通过对数据库执行<span lang=EN-US>SQL</span>查询得到相关记录，然后把查询结果组织成<span lang=EN-US>HTML</span>页面返回给客户端，用户使用浏览器观察最终结果。为了提高系统服务的灵活性、可扩展性，使服务对象范围更广，许多商业网站都尽可能地把商务规则、原始数据和表现形式，即执行功能的代码，存放数据的数据库，显示数据的页面单独的划分出来，做成相互独立的服务。<span lang=EN-US>HTML</span>那种包含数据并制定相应的显示样式，该方式显然不合乎这种需求。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">因此，</span><span style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">把从数据库提取出来的数据，即原始数据存放在<span lang=EN-US>XML</span>文档中（基本不变，显示量大的公有数据）</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">，使用样式单文件（<span lang=EN-US>XSL</span>）显示内容是<span lang=EN-US>XML</span>技术适合于电子商务的优势所在。但从本质上来说，<span lang=EN-US>XSL</span>技术不是面向数据显示的，它是一种格式转换技术，在显示手段和方式上都远不及<span lang=EN-US>HTML</span>那样丰富。并且从本质来说，<span lang=EN-US>XSL</span>的显示样式方式，最终还是利用了<span lang=EN-US>HTML</span>模板进行显示，只不过中间多了一个转换罢了。对编程人员来说，一种较为理想的方案是把<span lang=EN-US>HTML</span>和<span lang=EN-US>XML</span>两种技术直接相结合起来，优势互补，使真正的原始数据在能够保持本来意义和结构的同时，还能充分利用<span lang=EN-US>HTML</span>那千变万化的显示技巧。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XML</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">数据岛就是这种技术融合的产物，它使用<span lang=EN-US>&lt;XML&gt;</span>标签把<span lang=EN-US>XML</span>数据直接嵌入到<span lang=EN-US>HTML</span>页面中，从而实现了二者的优势互补。用<span lang=EN-US>Internet Explorer 5.0</span>版本以上的浏览器，非正式的<span lang=EN-US>&lt;XML&gt;</span>标记可用于创建<span lang=EN-US>XML</span>数据岛。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">当我们在<span lang=EN-US>HTML</span>文档中通过使用<span lang=EN-US>XML</span>标记来嵌入<span lang=EN-US>XML</span>数据时，就在<span lang=EN-US>HTML</span>文档中形成一个<span lang=EN-US>XML</span>数据岛<span lang=EN-US>(Data Island)</span>。数据岛是指存在于<span lang=EN-US>HTML</span>页面中的<span lang=EN-US>XML</span>数据。数据岛允许你在<span lang=EN-US>HTML</span>页面中集成<span lang=EN-US>XML</span>，对<span lang=EN-US>XML</span>编写脚本，不需要通过脚本或<span lang=EN-US>&lt;OBJECT&gt;</span>标签读取<span lang=EN-US>XML</span>。几乎所有能够存在于一个结构完整的<span lang=EN-US>XML</span>文档中的东西都能存在于一个数据岛中。包括处理指示、<span lang=EN-US>DOCTYPE</span>声明和内部子集。这里面需要我们注意的是，<span lang=EN-US>XML</span>文档中的设置编码的字符串不能放在其中。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">我们可以利用<span lang=EN-US>XML</span>元素来创建数据岛，数据岛就是被<span lang=EN-US>HTML</span>页面引用或包含的<span lang=EN-US>XML</span>数据，<span lang=EN-US>XML</span>数据可以包含在<span lang=EN-US>HTML</span>文件内，也可以包含在某外部文件内，利用<span lang=EN-US>XML</span>数据岛可以让我们免除编写复杂脚本的麻烦。<span lang=EN-US>DOM</span>可对<span lang=EN-US>XML</span>文档进行解析，文档中的元素、实体、属性等所有个体都可以用对象模型表示，整个文档的逻辑结构类似一棵树，生成的对象模型就是树的节点，每个对象同时包含了方法和属性，<span lang=EN-US>DOM</span>提供了许多查找节点的方法。利用<span lang=EN-US>DOM</span>，开发人员可以动态地创建<span lang=EN-US>XML</span>、遍历文档、增加（删除<span lang=EN-US>/</span>修改）文档内容，<span lang=EN-US>DOM</span>提供的<span lang=EN-US>API</span>与编程语言无关，所以对一些<span lang=EN-US>DOM</span>标准中没有明确定义的接口，不同解析器的实现方法可能会有所差别。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN-TOP: 12pt; BACKGROUND: white; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-font-kerning: 0pt">Web</span><span style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">服务器与客户机之间的数据传递方式有三种：<span lang=EN-US>HTML</span>页面、<span lang=EN-US>XML</span>文档以及<span lang=EN-US>XML</span>数据岛</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。采用数据岛作为交互手段，不仅可以使数据具备一定的语义信息，同时还能保持<span lang=EN-US>HTML</span>原有的一些特色，如利用用户端脚本程序实现动态信息交换等，可以在客户端对<span lang=EN-US>XML</span>里面的数据进行操作。综合了使用<span lang=EN-US>XML</span>文档和<span lang=EN-US>HTML</span>文档传输数据的优点。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/91336.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-27 13:58 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/27/91336.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在HTML中显示XML数据【兼容IE、Firefxo、Opera】</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91329.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Mon, 27 Jul 2009 05:50:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91329.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91329.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91329.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91329.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><u><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">XML</span></u><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">确实是个好东西，尤其是现在大部分网站都是生成<u><span lang=EN-US>HTML</span></u>静态页面的，但是有一些数据是需要动态改变的，频繁更新<span lang=EN-US>HTML</span>不是个好办法，这个时候<span lang=EN-US>XML</span>就大显身手了，只需要把经常变动的内容保存成<span lang=EN-US>XML</span>，在<span lang=EN-US>HTML</span>页面上调用就可以，需要时只要更新下<span lang=EN-US>XML</span>，不过在<span lang=EN-US>HTML</span>中调用<span lang=EN-US>XML</span>数据还是有点不怎么容易，数据岛适合大量数据的显示，但是只支持<span lang=EN-US>IE</span>，下面这段小代码可以兼容大部分浏览器【附件里面有全部文件】：<span lang=EN-US><br></span>这里是要显示<span lang=EN-US>XML</span>数据的<span lang=EN-US>HTML</span>文件内容【<span lang=EN-US>ShowXML.html</span>】： <span lang=EN-US><o:p></o:p></span></span></p>
<div style="BORDER-RIGHT: #fefeef 1pt solid; PADDING-RIGHT: 0cm; BORDER-TOP: #fefeef 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: white; PADDING-BOTTOM: 0cm; MARGIN-LEFT: 15pt; BORDER-LEFT: #fefeef 1pt solid; MARGIN-RIGHT: 15pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d9d9d4 1pt solid; mso-border-alt: solid #fefeef .75pt; mso-element: para-border-div; mso-border-bottom-alt: solid #d9d9d4 .75pt">
<p class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; BACKGROUND: white; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; LINE-HEIGHT: 150%; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none; mso-border-alt: solid #fefeef .75pt; mso-outline-level: 6; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-padding-alt: 0cm 0cm 0cm 4.0pt; mso-border-bottom-alt: solid #d9d9d4 .75pt"><strong><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">引用<span lang=EN-US>:<o:p></o:p></span></span></strong></p>
</div>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;html&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;head&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;script type="text/javascript"&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">//</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">页面内容全部载入以后载入<span lang=EN-US>XML</span>数据<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">var xmlDoc<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">window.onload = function (){<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">// code for IE<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">if (window.ActiveXObject){<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-spacerun: yes">&nbsp; </span>xmlDoc = new ActiveXObject("Microsoft.XMLDOM");<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-spacerun: yes">&nbsp; </span>xmlDoc.async = false;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-spacerun: yes">&nbsp; </span>xmlDoc.load("Data.xml");<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-spacerun: yes">&nbsp; </span>getXML()<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">}<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">// code for Mozilla, etc.<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">else if (document.implementation &amp;&amp; document.implementation.createDocument){<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-spacerun: yes">&nbsp; </span>xmlDoc = document.implementation.createDocument("","",null);<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-spacerun: yes">&nbsp; </span>xmlDoc.load("Data.xml");<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-spacerun: yes">&nbsp; </span>xmlDoc.onload = getXML<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">}<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">else{<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-spacerun: yes">&nbsp; </span>alert('</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">您的浏览器不支持<span lang=EN-US>JavaScrpit</span>，<span lang=EN-US>XML</span>数据将不能显示。<span lang=EN-US>');<o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">}<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">}<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">function getXML(){<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">document.getElementById("xmlData_Name").innerHTML = xmlDoc.getElementsByTagName("name")[0].firstChild.nodeValue<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">document.getElementById("xmlData_Email").innerHTML = xmlDoc.getElementsByTagName("email")[0].firstChild.nodeValue<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">document.getElementById("xmlData_Address").innerHTML = xmlDoc.getElementsByTagName("address")[0].firstChild.nodeValue<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">document.getElementById("xmlData_Address_1").innerHTML = xmlDoc.getElementsByTagName("address")[1].firstChild.nodeValue<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">}<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;/script&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;/head&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;body&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;h1&gt;HTML</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">显示<span lang=EN-US>XML</span>示例：<span lang=EN-US>&lt;/h1&gt;<o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;b&gt;</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">姓名：<span lang=EN-US>&lt;/b&gt; &lt;span id="xmlData_Name"&gt;&lt;/span&gt;&lt;br /&gt;<o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;b&gt;</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">邮箱：<span lang=EN-US>&lt;/b&gt; &lt;span id="xmlData_Email"&gt;&lt;/span&gt;&lt;br /&gt;<o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;b&gt;</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">地址：<span lang=EN-US>&lt;/b&gt; &lt;span id="xmlData_Address"&gt;&lt;/span&gt;<o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;hr /&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;b&gt;</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">地址：<span lang=EN-US>&lt;/b&gt; &lt;span id="xmlData_Address_1"&gt;&lt;/span&gt;<o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;/body&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;/html&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; mso-pagination: widow-orphan"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">下面是<span lang=EN-US>XML</span>文件内容【<span lang=EN-US>Data.xml</span>】： <span lang=EN-US><o:p></o:p></span></span></p>
<div style="BORDER-RIGHT: #fefeef 1pt solid; PADDING-RIGHT: 0cm; BORDER-TOP: #fefeef 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: white; PADDING-BOTTOM: 0cm; MARGIN-LEFT: 15pt; BORDER-LEFT: #fefeef 1pt solid; MARGIN-RIGHT: 15pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d9d9d4 1pt solid; mso-border-alt: solid #fefeef .75pt; mso-element: para-border-div; mso-border-bottom-alt: solid #d9d9d4 .75pt">
<p class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; BACKGROUND: white; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; LINE-HEIGHT: 150%; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none; mso-border-alt: solid #fefeef .75pt; mso-outline-level: 6; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-padding-alt: 0cm 0cm 0cm 4.0pt; mso-border-bottom-alt: solid #d9d9d4 .75pt"><strong><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">引用<span lang=EN-US>:<o:p></o:p></span></span></strong></p>
</div>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;?xml version="1.0" encoding="gb2312" ?&gt; <o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;date&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;addr&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;name&gt;</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">紫茉莉<span lang=EN-US>.Net&lt;/name&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;email&gt;Zimoli.Net@QQ.com&lt;/email&gt; <o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;address&gt;&lt;![CDATA[</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">这里是可以是<span lang=EN-US>HTML</span>内容，<span lang=EN-US>&lt;a href="#"&gt;</span>这里是个链接。<span lang=EN-US>&lt;/a&gt;]]&gt;&lt;/address&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;/addr&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;addr&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;name&gt;</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">流行孤单<span lang=EN-US>&lt;/name&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;email&gt;Zimoli.Net@Gmail.com&lt;/email&gt; <o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;address&gt;&lt;![CDATA[</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">这里是第二条<span lang=EN-US>XML</span>记录的内容。<span lang=EN-US>&lt;/a&gt;]]&gt;&lt;/address&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;/addr&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&lt;/date&gt;<strong style="mso-bidi-font-weight: normal"><o:p></o:p></strong></span></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/91329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-27 13:50 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/27/91329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从XML文本文档中读取数据分页显示在HTML页面</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91328.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Mon, 27 Jul 2009 05:43:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91328.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91328.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91328.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91328.html</trackback:ping><description><![CDATA[<p><strong>关键字: html</strong>
<p>book.xml
<pre>&lt;?xml version="1.0" encoding="GB2312" standalone="yes"?&gt;
&lt;书籍列表&gt;
&lt;计算机书籍&gt;
&lt;书名&gt;Spring2.0宝典&lt;/书名&gt;
&lt;作者&gt;李刚&lt;/作者&gt;
&lt;价格&gt;79.00&lt;/价格&gt;
&lt;简要介绍&gt;
该书详细介绍了Spring2.0的用法
&lt;/简要介绍&gt;
&lt;/计算机书籍&gt;
&lt;计算机书籍&gt;
&lt;书名&gt;轻量级J2EE企业开发实战&lt;/书名&gt;
&lt;作者&gt;李刚&lt;/作者&gt;
&lt;价格&gt;63.00&lt;/价格&gt;
&lt;简要介绍&gt;
该书主要介绍了一种流行的轻量级企业应用架构
&lt;/简要介绍&gt;
&lt;/计算机书籍&gt;
&lt;计算机书籍&gt;
&lt;书名&gt;Ajax宝典&lt;/书名&gt;
&lt;作者&gt;李刚&lt;/作者&gt;
&lt;价格&gt;76.00&lt;/价格&gt;
&lt;简要介绍&gt;
该书全面介绍了Ajax的相关技术
&lt;/简要介绍&gt;
&lt;/计算机书籍&gt;
&lt;/书籍列表&gt;</pre>
<pre>&nbsp;</pre>
<pre>&nbsp;</pre>
<p>display.html
<p>Html代码
<pre>&lt;html&gt;
&lt;body&gt;
&lt;xml src="book.xml" id="xmldso" async="false"&gt;&lt;/xml&gt;
&lt;table id="tb2" datasrc="#xmldso" width="100%" border="1" datapagesize="2" &gt;
&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;
&lt;tr align="left"&gt;
&lt;td&gt;&lt;span datafld="书名"&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span datafld="作者"&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span datafld="价格"&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span datafld="简要介绍"&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;INPUT TYPE="button" VALUE="第一页" ONCLICK='document.getElementById("tb2").firstPage();'&gt;
&lt;INPUT TYPE="button" VALUE="前一页" ONCLICK='document.getElementById("tb2").previousPage();'&gt;
&lt;INPUT TYPE="button" VALUE="后一页" ONCLICK='document.getElementById("tb2").nextPage();'&gt;
&lt;INPUT TYPE="button" VALUE="最后一页" ONCLICK='document.getElementById("tb2").lastPage();'&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/91328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-27 13:43 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/27/91328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在 HTML中显示XML数据的策略</title><link>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91322.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Mon, 27 Jul 2009 05:10:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91322.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/91322.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/07/27/91322.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/91322.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/91322.html</trackback:ping><description><![CDATA[<p>&#160;</p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">XML </span><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">的全名是<span lang=EN-US> eXtenxible Markup Language </span>（可以延伸或扩展的标记语言），它的语法类似<span lang=EN-US> HTML </span>，都是用标签来描述数据。<span lang=EN-US> HTML </span>的标签是固定的，我们只能使用、不能修改；<span lang=EN-US> XML </span>则不同，它没有预先定义好的标签可以使用，而是依据设计上的需要，自行定义标签。所以在电子商务的网络时代，用<span lang=EN-US> XML </span>来组织数据，再用<span lang=EN-US> HTML </span>页面来显示，将是设计网页的新方向。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　本文主要对两种在<span lang=EN-US> HTML </span>中存贮并显示<span lang=EN-US> XML </span>文档数据的策略（数据绑定、<span lang=EN-US> DOM </span>）进行探讨。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-outline-level: 2; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><strong><span style="FONT-SIZE: 18pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">一、 数据绑定（<span lang=EN-US> Data Binding </span>）技术 <span lang=EN-US><o:p></o:p></span></span></strong></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　数据绑定技术适用于结构规则的<span lang=EN-US> XML </span>文档，它对<span lang=EN-US> XML </span>文档的数据用类似于关系数据库的技术进行处理。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　例如，有一个关于产品目录的<span lang=EN-US> XML </span>文档（<span lang=EN-US> product.xml </span>）结构如下： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　<span lang=EN-US>&#8230;&#8230; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　<span lang=EN-US>&lt;CATALOGUE&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　<span lang=EN-US>&lt;PRODUCT InStock=&#8221;yes&#8221;&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;PRODUCTID&gt;00001&lt;/PRODUCTID&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;PRODUCTNAME Supplier=&#8221;fuller&#8221;&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　　　　　<span lang=EN-US>football &lt;/PRODUCTNAME&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;PRICE&gt; 50&lt;/PRICE&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　<span lang=EN-US>&#8230;&#8230; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　<span lang=EN-US>&lt;/PRODUCT&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　<span lang=EN-US>&#8230;&#8230; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　<span lang=EN-US>&lt;/CATALOGUE&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　按下面介绍的两个步骤，可将<span lang=EN-US> XML </span>文档和<span lang=EN-US> HTML </span>文档绑定，并在<span lang=EN-US> IE5 </span>中显示<span lang=EN-US> XML </span>文档的数据。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>1</span>． 把一个<span lang=EN-US> XML </span>文档连接到一个<span lang=EN-US> HTML </span>文档中 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　方法一：将整个<span lang=EN-US> XML </span>文档插入至<span lang=EN-US> HTML </span>文档中，其形式如下： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;HTML&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;HEAD&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　　<span lang=EN-US>&lt;TITLE&gt; product decription&lt;/TITLE&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;/HEAD&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;BODY&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　　<span lang=EN-US>&lt;XML ID=&#8221;product&#8221;&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　　<span lang=EN-US>&lt;?XML version=&#8221;<st1:chmetcnv unitname="&#8221;" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">1.0&#8221;</st1:chmetcnv>?&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&#8230;&#8230; &#8216; </span>将以上的<span lang=EN-US> product.xml </span>文档的内容插入至该处 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　　<span lang=EN-US>&lt;/XML&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&#8230;&#8230; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;BOLY&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;/HTML&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　方法二：只将一个对<span lang=EN-US> XML </span>文档的引用插入至<span lang=EN-US> HTML </span>文档中，其形式如下： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;HTML&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;HEAD&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　　<span lang=EN-US>&lt;TITLE&gt; product decription&lt;/TITLE&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;/HEAD&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;BODY&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　　<span lang=EN-US>&lt;XML ID=&#8221;product&#8221; SRC=&#8221;product.xml&#8221;&gt; &lt;/XML&gt; &#8216; </span>用<span lang=EN-US> src </span>指出引用的<span lang=EN-US> XML </span>文档源 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　　<span lang=EN-US>&#8230;&#8230; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;/BODY&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;/HTML&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　方法二的好处在于：它将<span lang=EN-US> XML </span>文档的数据和<span lang=EN-US> HTML </span>的显示格式分开，便于用户进行维护。而且，多个<span lang=EN-US> HTML </span>文档可以共享一个<span lang=EN-US> XML </span>文档。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　当<span lang=EN-US> IE5 </span>打开一个<span lang=EN-US> HTML </span>文档时，其内置的<span lang=EN-US> XML </span>处理器会读取和分析页面中已连接的<span lang=EN-US> XML </span>文档，然后产生一个数据源对象（<span lang=EN-US> DSO </span>，全称是<span lang=EN-US> Data Source Object </span>），以便存贮和读取数据。<span lang=EN-US> DSO </span>在存贮<span lang=EN-US> XML </span>文档中的数据时，会将元素解释成记录和字段的集合，并自动抽取<span lang=EN-US> XML </span>元素的数据和处理所有的显示细节。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>2 </span>．将标准的<span lang=EN-US> HTML </span>元素（例如<span lang=EN-US> TABLE </span>、<span lang=EN-US> SPAN </span>等）和<span lang=EN-US> XML </span>元素绑定 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　方法一：表数据绑定，即将<span lang=EN-US> HTML </span>的<span lang=EN-US> TABLE </span>元素和<span lang=EN-US> XML </span>数据绑定，以便在<span lang=EN-US> IE5 </span>中用表格的形式一次性地显示整个<span lang=EN-US> XML </span>文档的数据。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　其形式如下： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　<span lang=EN-US>&#8230;&#8230; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　<span lang=EN-US>&lt;TABLE DATASRC=&#8221;#PRODUCT&#8221; BORDER=&#8221;<st1:chmetcnv unitname="&#8221;" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">1&#8221;</st1:chmetcnv> &#8230;&#8230;&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;THEAD&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　　<span lang=EN-US>&lt;TH&gt; productid&lt;/TH&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　　<span lang=EN-US>&#8230;&#8230; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;/TH&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　<span lang=EN-US>&lt;/THEAD&gt; &#8216; </span>显示表格的标题 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　<span lang=EN-US>&lt;TR ALIGN=&#8221;center&#8221;&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;TD&gt;&lt;SPAN DATAFLD=&#8221;productid&#8221;&gt;&lt;/SPAN&gt;&lt;/TD&gt; &#8216; </span>在表格单元格中显示<span lang=EN-US> productid </span>的内容 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&#8230;&#8230; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　<span lang=EN-US>&lt;/TR&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　<span lang=EN-US>&lt;/TABLE&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　<span lang=EN-US>&#8230;&#8230; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　方法二：单一记录数据绑定，即将<span lang=EN-US> HTML </span>元素（如<span lang=EN-US> SPAN </span>、<span lang=EN-US> BUTTON </span>或<span lang=EN-US> LABEL </span>等非表格元素）和<span lang=EN-US> XML </span>文档中的一个单一的字段进行绑定，以便在<span lang=EN-US> IE5 </span>中一次只显示一条记录的内容。此时，为了浏览方便，最好在页面中增加关于记录的导航按钮。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　其形式如下： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　<span lang=EN-US>&#8230;&#8230; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　<span lang=EN-US>&lt;SPAN STYLE=&#8221;font-style:italic&#8221;&gt; ProductID&lt;/SPAN&gt; &#8216; </span>显示标题 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>&lt;SPAN DATASRC=&#8221;#product&#8221; DATAFLD=&#8221;productid&#8221; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　<span lang=EN-US>STYLE=&#8221;font-weight:bold&#8221;&gt;&lt;/SPAN&gt; &#8216; </span>显示<span lang=EN-US> productid </span>的内容 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>&#8230;&#8230; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>&lt;BUTTON ONLICK=&#8221;product.recordset.moveprevious(); <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　　　　　　　<span lang=EN-US>if (product.recordset.bof) <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　　　　　　　<span lang=EN-US>product.recordset.movenext()&#8221;&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　　　　　　　<span lang=EN-US>&amp;lt;back; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>&lt;/BUTTON&gt; &#8216; </span>产生一个向前导航的按钮 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>&#8230;&#8230; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　注意：当用数据绑定技术显示<span lang=EN-US> XML </span>文档数据时，如果<span lang=EN-US> XML </span>元素中有参数，则<span lang=EN-US> DSO </span>会将该元素处理成层次型的记录。例如：<span lang=EN-US> product.xml </span>文档中的<span lang=EN-US>&#8220; PRODUCTNAME &#8221;</span>元素有一个<span lang=EN-US>&#8220; Supplier &#8221;</span>参数，则<span lang=EN-US> DSO </span>会将该元素处理成下面的形式： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>&lt;PRODUCTNAME&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　<span lang=EN-US>&lt;Supplier&gt; fuller&lt;/Supplier&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　<span lang=EN-US>&lt;$TEXT&gt;football&lt;/$TEXT&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>&lt;/PRODUCTNAME&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　此时，必须用<span lang=EN-US> $TEXT </span>作为字段名来读取<span lang=EN-US>&#8220; football &#8221;</span>数据，其形式如下： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>&#8230;&#8230; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　<span lang=EN-US>&lt;TABLE DATASRC=&#8221;#product&#8221; DATAFLD=&#8221;productname&#8221;&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　<span lang=EN-US>&lt;TR&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;TD&gt;&lt;SPAN DATAFLD=&#8221;$TEXT&#8221;&gt;&lt;/SPAN&gt;&lt;/TD&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　　　<span lang=EN-US>&lt;TD&gt;&lt;SPAN DATAFLD=&#8221;Supplier&#8221;&gt;&lt;/SPAN&gt;&lt;/TD&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　<span lang=EN-US>&lt;/TR&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　　　<span lang=EN-US>&lt;TABLE&gt; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>&#8230;&#8230; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-outline-level: 2; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><strong><span style="FONT-SIZE: 18pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">二、<span lang=EN-US> DOM </span>技术 <span lang=EN-US><o:p></o:p></span></span></strong></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>1 </span>．<span lang=EN-US> DOM </span>技术的特点 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>DOM </span>是<span lang=EN-US> XML Document Object Model </span>的简称。它是<span lang=EN-US> XML </span>文档和<span lang=EN-US> HTML </span>文档的接口，其中包含一系列代表<span lang=EN-US> XML </span>文档不同部件的程序对象。利用这些对象的属性和方法，并使用脚本语言（如<span lang=EN-US> VBScript </span>或<span lang=EN-US> JavaScript </span>等）编制成脚本后，就可以在一个<span lang=EN-US> HTML </span>页面中显示<span lang=EN-US> XML </span>文档的数据。虽然利用<span lang=EN-US> DOM </span>技术比数据绑定技术复杂，但它可以处理及显示结构规则或不规则的<span lang=EN-US> XML </span>文档中任意部件（如元素、参数、处理指示、注释、实体和标记等）的数据内容， <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　和数据绑定技术类似，要使用<span lang=EN-US> DOM </span>技术，必须首先对<span lang=EN-US> XML </span>文档源进行引用： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>&lt;XML ID=&#8221;product&#8221; SRC=&#8221;product.xml&#8221;&gt;&lt;/XML&gt; &#8216; </span>对<span lang=EN-US> XML </span>文档源的引用 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　接着，就可以利用<span lang=EN-US> DSO </span>的<span lang=EN-US> XMLDocument </span>成员使用<span lang=EN-US> DOM </span>： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>Document=product.XMLDocument <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　作为<span lang=EN-US> W<st1:chmetcnv unitname="C" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">3C</st1:chmetcnv> </span>的标准接口规范，目前，<span lang=EN-US> DOM </span>由三部分组成，包括：核心（<span lang=EN-US> core </span>）、<span lang=EN-US> HTML </span>和<span lang=EN-US> XML </span>。核心部分是结构化文档比较底层对象的集合，这一部分所定义的对象已经完全可以表达出任何<span lang=EN-US> HTML </span>和<span lang=EN-US> XML </span>文档中的数据。<span lang=EN-US> HTML </span>接口和<span lang=EN-US> XML </span>接口两部分则是专为操作具体的<span lang=EN-US> HTML </span>文档和<span lang=EN-US> XML </span>文档而提供的高级接口，它们可以使得对这两类文件的操作更加方便。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　当<span lang=EN-US> DOM </span>对<span lang=EN-US> XML </span>文档进行分析之后，不管这个文档有多简单或者多复杂，其中的信息都会被转化成一棵对象节点树（如图<span lang=EN-US> 1 </span>）。在这棵节点树中，有一个名为<span lang=EN-US> Document </span>根节点，所有其他的节点都是根节点的后代节点。<span lang=EN-US> DOM </span>实际上是利用对象来把文档模型化，这些模型不仅描述了文档的结构，还定义了模型中对象的行为。换句话说，图<span lang=EN-US> 1 </span>中的节点不是数据结构，而是对象。<span lang=EN-US> DOM </span>接口利用对象中包含的方法和属性，就可以访问、修改、添加、删除、创建树中的节点和内容。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　在<span lang=EN-US> DOM </span>接口规范中，有四个基本的接口：<span lang=EN-US> Document </span>，<span lang=EN-US> Node </span>，<span lang=EN-US> NodeList </span>以及<span lang=EN-US> NamedNodeMap </span>。其中，<span lang=EN-US> Document </span>接口是对文档进行操作的入口。它是从<span lang=EN-US> Node </span>接口继承过来的。<span lang=EN-US> Node </span>接口是其他大多数接口的父类，象<span lang=EN-US> Documet </span>，<span lang=EN-US> Element </span>，<span lang=EN-US> Attribute </span>，<span lang=EN-US> Text </span>，<span lang=EN-US> Comment </span>等接口都是从<span lang=EN-US> Node </span>接口继承过来的。<span lang=EN-US> NodeList </span>接口是一个节点的集合，它包含了某个节点中的所有子节点。<span lang=EN-US> NamedNodeMap </span>接口也是一个节点的集合，通过该接口，可以建立节点名和节点之间的一一映射关系，从而利用节点名就可以直接访问特定的节点。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: center; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=center><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><a href="http://www.cppblog.com/images/cppblog_com/woaidongmao/WindowsLiveWriter/HTMLXML_B947/clip_image001_4.jpg"><img title=clip_image001 style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=348 alt=clip_image001 src="http://www.cppblog.com/images/cppblog_com/woaidongmao/WindowsLiveWriter/HTMLXML_B947/clip_image001_thumb_1.jpg" width=525 border=0 v:shapes="_x0000_i1025"></a><o:p></o:p></span></p>
<p class=MsoNormal style="TEXT-ALIGN: center; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=center><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">图<span lang=EN-US>1<o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>2 </span>．利用<span lang=EN-US> DOM </span>对<span lang=EN-US> XML </span>文档的数据进行处理 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　（<span lang=EN-US>1</span>） 对<span lang=EN-US> XML </span>某个元素的数据进行处理 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　其形式如下： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>productid.innerText=DocumentElement.childNodes(0).text; &#8216; </span>取得<span lang=EN-US> productid </span>的数据，并将它赋给<span lang=EN-US> HTML SPAN </span>元素的<span lang=EN-US> innerText </span>属性 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>&lt;SPAN ID=&#8221;productid&#8221; STYLE=&#8221;font-weight:bold&#8221;&gt;&lt;/SPAN&gt; &#8216; </span>显示<span lang=EN-US> productid </span>的数据 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　（<span lang=EN-US>2</span>） 对<span lang=EN-US> XML </span>文档中同名元素的所有数据进行处理 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　其形式如下： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>Nodelist=Document.getElementsByTagName(&#8220;productname&#8221;); &#8216; </span>取得所有<span lang=EN-US> productname </span>的数据，并形成一个<span lang=EN-US> Nodelist </span>集合 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>For(i=0;i&lt;Nodelist.length;++i) <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>ResultHTML+=Nodelist(i).xml+&#8221;\n\n&#8221;; <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>ResultDiv.innerText=ResultHTML; &#8216; </span>用循环语句显示所有<span lang=EN-US> productname </span>的数据 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　（<span lang=EN-US>3</span>） 对<span lang=EN-US> XML </span>元素的参数数据进行处理 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　其形式如下： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>NamedNodeMap=Document.DocumentElement.childNodes(0).attributes; &#8216; </span>取得所有<span lang=EN-US> product </span>的参数，并形成一个<span lang=EN-US> NamedNodeMap </span>集合 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>For(i=0;i&lt;NamedNodeMap.length;++i) <o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>Alert(NamedNodeMap.getNameItem(i).nodeValue); &#8216; </span>用循环语句显示所有<span lang=EN-US> product </span>参数的数据 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　如果在参数中包含有实体，则应采用下列形式对<span lang=EN-US> XML </span>的实体和实体中的标记进行访问： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>Attribute=Document.DocumentElement.childNodes(0).attributes(0); &#8216; </span>取得<span lang=EN-US> product </span>元素的参数 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>If(attribute.datatype==&#8221;entity&#8221;) &#8216; </span>检测参数的类型是否为<span lang=EN-US> entity </span>类型 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>Entity=Document.doctype.entities.getNameItem(attribute.nodeValue); &#8216; </span>取得<span lang=EN-US> XML </span>文档的<span lang=EN-US> DTD </span>声明中的某个实体的名字 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>DisplayText=Entity.attributes.getNameItem(&#8220;SYSTEM&#8221;).nodeValue; &#8216; </span>取得该实体中<span lang=EN-US> system </span>的源文件数据 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　<span lang=EN-US>NotationName=Entity.attributes.getNameItem(&#8220;NDATA&#8221;).nodeValue; &#8216; </span>取得该实体中<span lang=EN-US> NDATA </span>标记的名字 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-outline-level: 2; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><strong><span style="FONT-SIZE: 18pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">三、结束语 <span lang=EN-US><o:p></o:p></span></span></strong></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　目前，有三种途经可以在<span lang=EN-US> IE5 </span>中显示<span lang=EN-US> XML </span>文档的数据：样式单、数据绑定及<span lang=EN-US> DOM </span>。样式单的特点是单独设计一个用于处理显示格式的样式单（<span lang=EN-US> CSS </span>样式单或<span lang=EN-US> XSL </span>样式单），然后在<span lang=EN-US> XML </span>文档中对样式单进行引用；而后面两种技术的特点是利用<span lang=EN-US> HTML </span>文档对<span lang=EN-US> XML </span>存贮的数据进行显示，这样，可以将<span lang=EN-US> XML </span>和<span lang=EN-US> HTML </span>相结合，充分利用<span lang=EN-US> XML </span>和<span lang=EN-US> HTML </span>各自的优点。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　参考书目： <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　（<span lang=EN-US>1</span>）<span lang=EN-US> Natanya Pirts </span>编<span lang=EN-US> . XML </span>轻松进阶<span lang=EN-US> . </span>电子工业出版社<span lang=EN-US> . 2000 </span>年月<span lang=EN-US> 1 </span>月 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　（<span lang=EN-US>2</span>）<span lang=EN-US> Jake Sturm </span>编<span lang=EN-US> . XML </span>解决方案<span lang=EN-US> . </span>北京大学出版社<span lang=EN-US> . 2001 </span>年<span lang=EN-US> 4 </span>月<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: arial; mso-bidi-font-size: 10.0pt"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/91322.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-07-27 13:10 <a href="http://www.cppblog.com/woaidongmao/archive/2009/07/27/91322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS滑动tab标签，供新手们学习。ie6/7/FF都通过</title><link>http://www.cppblog.com/woaidongmao/archive/2009/06/22/88278.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Mon, 22 Jun 2009 06:06:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/06/22/88278.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/88278.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/06/22/88278.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/88278.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/88278.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原文：http://www.cnblogs.com/cnfiowen/archive/2009/06/22/1508158.html&nbsp;其实网上很多了，但是感觉要么CSS写得不好看，要么JS写的难以理解，今天就重新写了一下，加了注释，供新手们学习。在ie6/7/ff下顺利通过&nbsp;&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...&nbsp;&nbsp;<a href='http://www.cppblog.com/woaidongmao/archive/2009/06/22/88278.html'>阅读全文</a><img src ="http://www.cppblog.com/woaidongmao/aggbug/88278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-06-22 14:06 <a href="http://www.cppblog.com/woaidongmao/archive/2009/06/22/88278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>采用xhtml+css的优点</title><link>http://www.cppblog.com/woaidongmao/archive/2009/06/20/88167.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Sat, 20 Jun 2009 04:13:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/06/20/88167.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/88167.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/06/20/88167.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/88167.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/88167.html</trackback:ping><description><![CDATA[<p style="LINE-HEIGHT: 150%"><strong style="mso-bidi-font-weight: normal"><span lang=EN-US style="COLOR: black">1.</span><span style="COLOR: black">遵循<span lang=EN-US>web</span>标准。</span></strong><span lang=EN-US style="COLOR: black"><br><strong style="mso-bidi-font-weight: normal">2.</strong></span><strong style="mso-bidi-font-weight: normal"><span style="COLOR: black">结构和表现相分离</span></strong><span style="COLOR: black">，而原来的<span lang=EN-US>html</span>结构和表现混杂在一起。很多传统的<span lang=EN-US>web</span>开发人员采用的依然是表格布局，结构和表现混杂的方式。可以说<span lang=EN-US>xhmtl</span>是<span lang=EN-US>html</span>向<span lang=EN-US>xml</span>的一种过渡。<span lang=EN-US><o:p></o:p></span></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="COLOR: black; FONT-FAMILY: wingdings; mso-bidi-font-family: wingdings; mso-fareast-font-family: wingdings"><span style="mso-list: ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><strong style="mso-bidi-font-weight: normal"><span style="COLOR: black">采用<span lang=EN-US>web</span>标准的目的是：</span></strong><span lang=EN-US style="COLOR: black"><br></span><span style="COLOR: black">提供最多利益给最多的网站用户<span lang=EN-US> <br></span>确保任何网站文挡都能够长期有效<span lang=EN-US> <br></span>简化代码、降低建设成本<span lang=EN-US> <br></span>让网站更容易使用，能适应更多不同用户和更多网路设备<span lang=EN-US> <br></span>当浏览器版本更新，或者出现新的网络交互设备时，确保所有应用能够继续正确执行。<span lang=EN-US> <br></span>对于网站设计和开发人员来说，遵循网站标准就是使用标准；对于你的网站用户来说，网站标准就是最佳体验。<span lang=EN-US><br style="mso-special-character: line-break"><br style="mso-special-character: line-break"><o:p></o:p></span></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="COLOR: black; FONT-FAMILY: wingdings; mso-bidi-font-family: wingdings; mso-fareast-font-family: wingdings"><span style="mso-list: ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><strong style="mso-bidi-font-weight: normal"><span style="COLOR: black">对网站浏览者的好处</span></strong><span style="COLOR: black">：<span lang=EN-US><br></span>文件下载与页面显示速度更快；<span lang=EN-US> <br></span>内容能被更多的用户所访问（包括失明、视弱、色盲等残障人士）；<span lang=EN-US> <br></span>内容能被更广泛的设备所访问（包括屏幕阅读机、手持设备、搜索机器人、打印机、电冰箱等等）<span lang=EN-US> <br></span>用户能够通过样式选择定制自己的表现界面<span lang=EN-US> <br></span>所有页面都能提供适于打印的版本<span lang=EN-US><br style="mso-special-character: line-break"><br style="mso-special-character: line-break"><o:p></o:p></span></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="COLOR: black; FONT-FAMILY: wingdings; mso-bidi-font-family: wingdings; mso-fareast-font-family: wingdings"><span style="mso-list: ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><strong style="mso-bidi-font-weight: normal"><span style="COLOR: black">对网站所有者的好处：</span></strong><span lang=EN-US style="COLOR: black"><br></span><span style="COLOR: black">更少的代码和组件，容易维护<span lang=EN-US> <br></span>带宽要求降低（代码更简洁），成本降低。举个例子：当<span lang=EN-US> ESPN.com </span>使用<span lang=EN-US> CSS</span>改版后，每天节约超过两TB字节（<span lang=EN-US>terabytes</span>）的带宽。<span lang=EN-US> <br></span>更容易被搜寻引擎搜索到<span lang=EN-US> <br></span>改版方便，不需要变动页面内容<span lang=EN-US> <br></span>提供打印版本而不需要复制内容<span lang=EN-US> <br></span>提高网站易用性。在美国，有严格的法律条款（<span lang=EN-US>Section 508</span>）来约束政府网站必须达到一定的易用性，其他国家也有类似的要求。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: arial; mso-bidi-font-size: 10.0pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: arial; mso-bidi-font-size: 10.0pt"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/88167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-06-20 12:13 <a href="http://www.cppblog.com/woaidongmao/archive/2009/06/20/88167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XHTML的介绍和优点</title><link>http://www.cppblog.com/woaidongmao/archive/2009/06/20/88166.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Sat, 20 Jun 2009 04:08:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/06/20/88166.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/88166.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/06/20/88166.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/88166.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/88166.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><strong><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1</span></strong><strong><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">、什么是<span lang=EN-US>XHTML?</span></span></strong><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">HTML</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">是一种基本的<span lang=EN-US>WEB</span>网页设计语言，<span lang=EN-US>XHTML</span>是一个基于<span lang=EN-US>XML</span>的置标语言，看起来与<span lang=EN-US>HTML</span>有些相象，只有一些小的但重要的区别，<span lang=EN-US>XHTML</span>就是一个扮演着类似<span lang=EN-US>HTML</span>的角色的<span lang=EN-US>XML</span>，所以，本质上说，<span lang=EN-US>XHTML</span>是一个过渡技术，结合了<span lang=EN-US>XML(</span>有几分<span lang=EN-US>)</span>的强大功能及<span lang=EN-US>HTML(</span>大多数<span lang=EN-US>)</span>的简单特性。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2000</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">年底，国际<span lang=EN-US>W<st1:chmetcnv unitname="C" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">3C</st1:chmetcnv>(World Wide Web Consortium)</span>组织公布发行了<span lang=EN-US>XHTML 1.0</span>版本。<span lang=EN-US>XHTML 1.0</span>是一种在<span lang=EN-US>HTML 4.0</span>基础上优化和改进的的新语言，目的是基于<span lang=EN-US>XML</span>应用。<span lang=EN-US>XHTML</span>是一种增强了的<span lang=EN-US>HTML,</span>它的可扩展性和灵活性将适应未来网络应用更多的需求。下面是<span lang=EN-US>W<st1:chmetcnv unitname="C" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">3C</st1:chmetcnv></span>的<span lang=EN-US>HTML</span>工作组主席<span lang=EN-US>Steven Pemberton</span>回答的关于<span lang=EN-US>XHTML</span>的常见基础问题。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">问<span lang=EN-US>:</span>什么是<span lang=EN-US>XHTML?<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">答<span lang=EN-US>:XHTML</span>是一种为适应<span lang=EN-US>XML</span>而重新改造的<span lang=EN-US>HTML</span>。当<span lang=EN-US>XML</span>越来越成为一种趋势，就出现了这样一个问题<span lang=EN-US>:</span>如果我们有了<span lang=EN-US>XML</span>，我们是否依然需要<span lang=EN-US>HTML?</span>为了回答这个问题，<span lang=EN-US>1998</span>年<span lang=EN-US>5</span>月我们在旧金山开了两天的工作会议，会议的结论是<span lang=EN-US>:</span>需要。我们依然需要使用<span lang=EN-US>HTML</span>。因为大量的人们已经习惯使用<span lang=EN-US>HTML</span>来作为他们的设计语言，而且，已经有数以百万计的页面是采用<span lang=EN-US>HTML</span>编写的。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">问<span lang=EN-US>:</span>为什么<span lang=EN-US>XHTML 1.0</span>相对<span lang=EN-US>HTML 4.0</span>独立发展<span lang=EN-US>?<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">答<span lang=EN-US>:</span>并不是这样。<span lang=EN-US>XHTML</span>恰恰就是<span lang=EN-US>HTML 4.0</span>的重新组织，<span lang=EN-US>(</span>确切的说它是<span lang=EN-US>HTML 4.01</span>，是一个修正版本的<span lang=EN-US>HTML 4.0</span>，只不过以<span lang=EN-US>XHTML 1.0</span>命名发行。<span lang=EN-US>) </span>它们在<span lang=EN-US>XML</span>里的解释会有一些必要的差别，但另一方面，它们依然非常相似，我们可以把<span lang=EN-US>XHTML</span>的工作看作是<span lang=EN-US>HTML 4.0</span>基础上的延续。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">问<span lang=EN-US>:XHTML 1.0</span>如何实现<span lang=EN-US>XML</span>标准<span lang=EN-US>?<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">答<span lang=EN-US>:XHTML</span>就是一种<span lang=EN-US>XML</span>应用。它采用<span lang=EN-US>XML</span>的<span lang=EN-US>DTD</span>文件格式定义，并运行在支持<span lang=EN-US>XML</span>的系统上。这里要感谢<span lang=EN-US>XML</span>的<span lang=EN-US>Namespaces</span>功能，浏览器制造商不需要再创造新的私有标签<span lang=EN-US>(tags)</span>，他们只需要在<span lang=EN-US>XHTML</span>代码里包含<span lang=EN-US>XML</span>代码片段，或者<span lang=EN-US>XML</span>代码里包含<span lang=EN-US>XHTML</span>代码片段。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><strong><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2</span></strong><strong><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">、与<span lang=EN-US>HTML</span>相比<span lang=EN-US>XHTML</span>有什么特点<span lang=EN-US>?</span></span></strong><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">(1)XHTML</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">解决<span lang=EN-US>HTML</span>语言所存在的严重制约其发展的问题。<span lang=EN-US>HTML</span>发展到今天存在三个主要缺点<span lang=EN-US>:</span>不能适应现在越多的网络设备和应用的需要，比如手机、<span lang=EN-US>PDA</span>、信息家电都不能直接显示<span lang=EN-US>HTML;</span>由于<span lang=EN-US>HTML</span>代码不规范、臃肿，浏览器需要足够智能和庞大才能够正确显示<span lang=EN-US>HTML;</span>数据与表现混杂，这样你的页面要改变显示，就必须重新制作<span lang=EN-US>HTML</span>。因此<span lang=EN-US>HTML</span>需要发展才能解决这个问题，于是<span lang=EN-US>W<st1:chmetcnv unitname="C" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">3C</st1:chmetcnv></span>又制定了<span lang=EN-US>XHTML</span>，<span lang=EN-US>XHTML</span>是<span lang=EN-US>HTML</span>向<span lang=EN-US>XML</span>过度的一个桥梁。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">(2)XML</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">是<span lang=EN-US>web</span>发展的趋势，所以人们急切的希望加入<span lang=EN-US>XML</span>的潮流中。<span lang=EN-US>XHTML</span>是当前替代<span lang=EN-US>HTML4</span>标记语言的标准，使用<span lang=EN-US>XHTML 1.0</span>，只要你小心遵守一些简单规则，就可以设计出既适合<span lang=EN-US>XML</span>系统，又适合当前大部分<span lang=EN-US>HTML</span>浏览器的页面。这个意思就是说，你可以立刻设计使用<span lang=EN-US>XML</span>，而不需要等到人们都使用支持<span lang=EN-US>XML</span>的浏览器。这个指导方针可以使<span lang=EN-US>web</span>平滑的过渡到<span lang=EN-US>XML</span>。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">(3)</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">使用<span lang=EN-US>XHTML</span>的另一个优势是<span lang=EN-US>:</span>它非常严密。当前网络上的<span lang=EN-US>HTML</span>的糟糕情况让人震惊，早期的浏览器接受私有的<span lang=EN-US>HTML</span>标签，所以人们在页面设计完毕后必须使用各种浏览器来检测页面，看是否兼容，往往会有许多莫名其妙的差异，人们不得不修改设计以便适应不同的浏览器。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">(4)XHTML</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">是能与其它基于<span lang=EN-US>XML</span>的标记语言、应用程序及协议进行良好的交互工作。。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">(5)XHTML</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">是<span lang=EN-US>Web</span>标准家族的一部分，能很好在无线设备等其它用户代理上。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><strong style="mso-bidi-font-weight: normal"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">(6)</span></strong><strong style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">在网站设计方面，<span lang=EN-US>XHTML</span>可助你去掉表现层代码的恶习，帮助你养成标记校验来测试页面工作的习惯。<span lang=EN-US><o:p></o:p></span></span></strong></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/88166.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-06-20 12:08 <a href="http://www.cppblog.com/woaidongmao/archive/2009/06/20/88166.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WEB开发流程？</title><link>http://www.cppblog.com/woaidongmao/archive/2009/06/20/88164.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Sat, 20 Jun 2009 03:43:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/06/20/88164.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/88164.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/06/20/88164.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/88164.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/88164.html</trackback:ping><description><![CDATA[<p>刚刚接触WEB制作，是在PS上画好布局图后使用切片截下图片做素材么？ <br>帮忙介绍一下基本界面设计的步骤。
<p>&nbsp;</p>
<p>==================</p>
<p>这就是做WEB的基本流程。 <br>不过盾你上面说的，你的意思是做界面的基本流程 <br>首选把需求分析做好。有那些东西。美工知道后。对显示模块进行画图设计。 <br>然后页面设计师通过div+css用网页的形式表示出来。如果要有动态效果还需要懂js <br>程序员在根据页面进行编码开发。 <br>最后完了集成测试。维护就不说了</p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/88164.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-06-20 11:43 <a href="http://www.cppblog.com/woaidongmao/archive/2009/06/20/88164.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web标准下的web开发流程思考</title><link>http://www.cppblog.com/woaidongmao/archive/2009/06/20/88163.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Sat, 20 Jun 2009 03:42:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/06/20/88163.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/88163.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/06/20/88163.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/88163.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/88163.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">web</span><span style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">开发需要考虑三面人的人员：设计师，程序员，客户，项目经理。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN-LEFT: 72pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: symbol; mso-bidi-font-family: symbol; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-fareast-font-family: symbol"><span style="mso-list: ignore">&#183;<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </span></span></span><span style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">设计师负责平面效果设计 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN-LEFT: 72pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: symbol; mso-bidi-font-family: symbol; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-fareast-font-family: symbol"><span style="mso-list: ignore">&#183;<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </span></span></span><span style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">程序员负责系统开发 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN-LEFT: 72pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: symbol; mso-bidi-font-family: symbol; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-fareast-font-family: symbol"><span style="mso-list: ignore">&#183;<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </span></span></span><span style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">客户提出需求验收系统 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN-LEFT: 72pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: symbol; mso-bidi-font-family: symbol; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-fareast-font-family: symbol"><span style="mso-list: ignore">&#183;<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </span></span></span><span style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">项目经理负责统筹全局<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　这里就不谈需求分析细节，和与客户谈判的细节了，假定需求已经确定。<span lang=EN-US><br></span>　　<span lang=EN-US>web</span>标准是结构和表现相分离的，所以设计师和程序员在项目经理需求确定之后，可以并行开发，打破了以往的，平面效果确定系统才能开发的低效率开发流程。什么样的系统都可以拥有<span lang=EN-US>MVC</span>式系统的开发效率。<span lang=EN-US><br><br></span>　　下面是一个流程图<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><a href="http://gongcheng.jdzj.com/gongcheng/edit/UploadFile/200672514520215.gif" target=_blank><span style="COLOR: #151515; TEXT-DECORATION: none; text-underline: none"><span style="mso-ignore: vglayout"><img class=imgtag title=clip_image001 style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=291 alt=clip_image001 src="http://www.cppblog.com/images/cppblog_com/woaidongmao/WindowsLiveWriter/webweb_A477/clip_image001_c594c630-4bd4-4ca6-9b15-0c5effdec9b9.gif" width=280 border=0 v:shapes="_x0000_i1025"></span></span></a><o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><br></span><strong><span style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">需求确定，系统规划完成之后：</span></strong><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br></span><span style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">　　程序员先确定<span lang=EN-US>xhtml</span>然后进行<span lang=EN-US>UI</span>设计，或者<span lang=EN-US>UI</span>设计完成后确定<span lang=EN-US>xhtml</span>结构。<span lang=EN-US><br></span><strong>当<span lang=EN-US>xhtml</span>结构确定之后：</strong><span lang=EN-US><br></span>　　<span lang=EN-US>CSS</span>的制作和程序的开发同步进行<span lang=EN-US><br><strong>CSS</strong></span><strong>和程序开发完成之后：</strong><span lang=EN-US><br></span>　　<span lang=EN-US>CSS</span>和<span lang=EN-US>xhtml</span>进行连接，制作完成<span lang=EN-US><br><br></span>　　至于表现层，可以放在<span lang=EN-US>xhtml</span>结构开发之后进行，也可以在程序开发阶段完成，比如<span lang=EN-US>AJAX</span>，这是程序员的工作，程序接口他们控制好就行。<span lang=EN-US><br></span>　　</span><span style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当然这只是一个思考，之间的衔接过程出现的问题可能很多，如果要推广还需要长时间的磨合。</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="FONT-SIZE: 12pt; COLOR: #151515; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">在整个开发过程中，每个人都必须对标准有一定的了解，结构的合理性取决于项目经理和程序员，艺术效果取决于<span lang=EN-US>ui</span>设计师，浏览器兼容性取决于<span lang=EN-US>CSS</span>制作者，设计师也需要对<span lang=EN-US>CSS</span>有一定的了解。<span lang=EN-US>DOM</span>不能破坏<span lang=EN-US>CSS</span>的结构。<span lang=EN-US><br><br>&nbsp;&nbsp;&nbsp;&nbsp; </span>根据朋友们的评论，对开发流程进行一些修改，<span lang=EN-US>web</span>用户界面和<span lang=EN-US>xhtml</span>结构必须一个在先一个在后，在现阶段有很少的人能根据结构预测界面，或者界面预测结构，或者界面设计完成确定结构，或者根据结构设计界面。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: arial"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/88163.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-06-20 11:42 <a href="http://www.cppblog.com/woaidongmao/archive/2009/06/20/88163.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML相对路径与绝对路径</title><link>http://www.cppblog.com/woaidongmao/archive/2009/06/14/87653.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Sun, 14 Jun 2009 11:20:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/06/14/87653.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/87653.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/06/14/87653.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/87653.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/87653.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">在网页制作的过程中，少不了跟路径打交道，比如，包含一个文件，插入一个图片等，与路径都有关系，如果使用了错误的文件路径，就会导致引用失效<span lang=EN-US>(</span>无法浏览链接文件，或无法显示插入的图片等<span lang=EN-US>)</span>。初学者可能会感到困惑，下面我就详细的介绍一下相对路径与绝对路径。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: fuchsia; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><a href="http://www.ajaxstu.com/catalog.asp?tags=html" target=_top>HTML</a></span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">有<span lang=EN-US>2</span>种路径的写法：相对路径和绝对路径。<span lang=EN-US><o:p></o:p></span></span></p>
<h4 style="BACKGROUND: white; LINE-HEIGHT: 150%"><span lang=EN-US style="COLOR: black">HTML</span><span style="COLOR: black">相对路径<span lang=EN-US>(Relative Path)<o:p></o:p></span></span></h4>
<p class=MsoNormal style="MARGIN-TOP: 18pt; BACKGROUND: white; LINE-HEIGHT: 150%; mso-outline-level: 6"><strong><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">同一个目录的文件引用<span lang=EN-US><o:p></o:p></span></span></strong></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">如果源文件和引用文件在同一个目录里，直接写引用文件名即可，这时引用文件的方式就是使用相对路径。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">我们现在建一个源文件<span lang=EN-US>info.html</span>，在<span lang=EN-US>info.html</span>里要引用<span lang=EN-US>index.html</span>文件作为超链接。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">假设<span lang=EN-US>info.html</span>路径是：<span lang=EN-US>c:\Inetpub\wwwroot\sites\blabla\info.html<br></span>假设<span lang=EN-US>index.html</span>路径是：<span lang=EN-US>c:\Inetpub\wwwroot\sites\blabla\index.html<br></span>在<span lang=EN-US>info.html</span>加入<span lang=EN-US>index.html</span>超链接的代码应该这样写：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">&lt;a href = "index.html"&gt;</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">这是超连接<span lang=EN-US>&lt;/a&gt;<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN-TOP: 18pt; BACKGROUND: white; LINE-HEIGHT: 150%; mso-outline-level: 6"><strong><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">如何表示上级目录<span lang=EN-US><o:p></o:p></span></span></strong></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">../</span><span style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">表示源文件所在目录的上一级目录，<span lang=EN-US>../../</span>表示源文件所在目录的上上级目录，以此类推。</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: #339966; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">假设<span lang=EN-US>info.html</span>路径是：<span lang=EN-US>c:\Inetpub\wwwroot\sites\blabla\info.html<br></span>假设<span lang=EN-US>index.html</span>路径是：<span lang=EN-US>c:\Inetpub\wwwroot\sites\index.html<br></span>在<span lang=EN-US>info.html</span>加入<span lang=EN-US>index.html</span>超链接的代码应该这样写： </span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #339966; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">&lt;a href = "../index.html"&gt;</span><span style="FONT-SIZE: 12pt; COLOR: #339966; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">这是超连接<span lang=EN-US>&lt;/a&gt;</span></span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: #339966; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">假设<span lang=EN-US>info.html</span>路径是：<span lang=EN-US>c:\Inetpub\wwwroot\sites\blabla\info.html<br></span>假设<span lang=EN-US>index.html</span>路径是：<span lang=EN-US>c:\Inetpub\wwwroot\index.html<br></span>在<span lang=EN-US>info.html</span>加入<span lang=EN-US>index.html</span>超链接的代码应该这样写：</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #339966; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">&lt;a href = "../../index.html"&gt;index.html&lt;/a&gt;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: #339966; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">假设<span lang=EN-US>info.html</span>路径是：<span lang=EN-US>c:\Inetpub\wwwroot\sites\blabla\info.html<br></span>假设<span lang=EN-US>index.html</span>路径是：<span lang=EN-US>c:\Inetpub\wwwroot\sites\wowstory\index.html<br></span>在<span lang=EN-US>info.html</span>加入<span lang=EN-US>index.html</span>超链接的代码应该这样写：</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #339966; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">&lt;a href = "../wowstory/index.html"&gt;index.html&lt;/a&gt;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN-TOP: 18pt; BACKGROUND: white; LINE-HEIGHT: 150%; mso-outline-level: 6"><strong><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">如何表示下级目录<span lang=EN-US><o:p></o:p></span></span></strong></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">引用下级目录的文件，直接写下级目录文件的路径即可。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">假设<span lang=EN-US>info.html</span>路径是：<span lang=EN-US>c:\Inetpub\wwwroot\sites\blabla\info.html<br></span>假设<span lang=EN-US>index.html</span>路径是：<span lang=EN-US>c:\Inetpub\wwwroot\sites\blabla\html\index.html<br></span>在<span lang=EN-US>info.html</span>加入<span lang=EN-US>index.html</span>超链接的代码应该这样写：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">&lt;a href = "html/index.html"&gt;</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">这是超连接<span lang=EN-US>&lt;/a&gt;<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">假设<span lang=EN-US>info.html</span>路径是：<span lang=EN-US>c:\Inetpub\wwwroot\sites\blabla\info.html<br></span>假设<span lang=EN-US>index.html</span>路径是：<span lang=EN-US>c:\Inetpub\wwwroot\sites\blabla\html\tutorials\index.html<br></span>在<span lang=EN-US>info.html</span>加入<span lang=EN-US>index.html</span>超链接的代码应该这样写：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">&lt;a href = "html/tutorials/index.html"&gt;</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">这是超连接<span lang=EN-US>&lt;/a&gt;<o:p></o:p></span></span></p>
<h4 style="BACKGROUND: white; LINE-HEIGHT: 150%"><span lang=EN-US style="COLOR: black">HTML</span><span style="COLOR: black">绝对路径<span lang=EN-US>(Absolute Path)<o:p></o:p></span></span></h4>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">大家都知道，在我们平时使用计算机时要找到需要的文件就必须知道文件的位置，而表示文件的位置的方式就是路径，例如只要看到这个路径：<span lang=EN-US>c:/website /img/photo.jpg</span>我们就知道<span lang=EN-US>photo.jpg</span>文件是在<span lang=EN-US>c</span>盘的<span lang=EN-US>website</span>目录下的<span lang=EN-US>img</span>子目录中。类似于这样完整的描述文件位置的路径就是绝对路径。我们不需要知道其他任何信息就可以根据绝对路径判断出文件的位置。而在网站中类似以<span lang=EN-US><a href="http://www.ajaxstu.com/" target=_top>http://www.ajaxstu.com</a>/img/photo.jpg</span>来确定文件位置的方式也是绝对路径。 <span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">HTML</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">绝对路径<span lang=EN-US>(absolute path)</span>在网页制作中指带域名的文件的完整路径。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">假设你注册了域名<span lang=EN-US><a href="http://www.ajaxstu.com/" target=_top>http://www.ajaxstu.com</a></span>，并申请了虚拟主机，你的虚拟主机提供商会给你一个目录，比如<span lang=EN-US>www</span>，这个<span lang=EN-US>www</span>就是你网站的根目录。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">假设你在<span lang=EN-US>www</span>根目录下放了一个文件<span lang=EN-US>default.asp</span>，这个文件的绝对路径就是：<span lang=EN-US> font color="#0058db"&gt;<a href="http://www.ajaxstu.com/default.asp" target=_top>http://www.ajaxstu.com/default.asp</a></span>。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: white; MARGIN: 12pt 0cm 6pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">假设你在<span lang=EN-US>www</span>根目录下建了一个目录叫<span lang=EN-US>archives</span>，然后在该目录下放了一个文件<span lang=EN-US>2886.html</span>，这个文件的绝对路径就是<span lang=EN-US><a href="http://www.ajaxstu.com/html_tutorials/index.html" target=_top>http://www.ajaxstu.com/archives/2886.html</a></span>。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 150%"><span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-bidi-font-family: arial"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/87653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-06-14 19:20 <a href="http://www.cppblog.com/woaidongmao/archive/2009/06/14/87653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSS+DIV布局心得 </title><link>http://www.cppblog.com/woaidongmao/archive/2009/05/25/85708.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Mon, 25 May 2009 07:29:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/05/25/85708.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/85708.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/05/25/85708.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/85708.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/85708.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 160%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">CSS+DIV</span><span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">布局已经变成白菜一样了，到处都是<span lang=EN-US>CSS+DIV</span>布局，去面试一个做网页的公司，肯定会问，你会<span lang=EN-US>CSS+DIV</span>布局不。到底啥是<span lang=EN-US>CSS+DIV</span>布局呢？传统上都是以用<span lang=EN-US>TABLE</span>布局的，<span lang=EN-US>TABLE</span>布局的要点是有两个，第一：适当的地方合并行和列，第二：懂<span lang=EN-US>TABLE</span>嵌套<span lang=EN-US>Table</span>。<span lang=EN-US><br></span>而且还可以直接在页面上控制<span lang=EN-US>Table</span>的高度长度。<span lang=EN-US>TABLE</span>布局最大的缺点，除了沉长的<span lang=EN-US>TR,TD</span>之外，言论最多的就是<span lang=EN-US>SEO</span>里对<span lang=EN-US>Table</span>布局的鄙视。大部分<span lang=EN-US>SEO</span>人都会觉得<span lang=EN-US>Table</span>布局不利于<span lang=EN-US>SEO</span>优化。这点。。到真是有点关系，我试过两个完全一样的网站，一个是用<span lang=EN-US>Table</span>布局的，我是用<span lang=EN-US>CSS+DIV</span>布局的，并适当的使用了<span lang=EN-US>H</span>标记，在<span lang=EN-US>GOOGLE</span>搜索上，我<span lang=EN-US>CSS+div</span>布局的网站要比<span lang=EN-US>Table</span>布局的要靠前。。。至于为什么，那个不是本文的重点。。忽略掉。<span lang=EN-US><br><br>&nbsp;&nbsp; CSS+DIV</span>布局最大的特点就是<span lang=EN-US>HTML</span>文件里的代码相对比较少，但是也造成了浏览器布局问题。。网上很多人都在说，我布局在<span lang=EN-US>IE</span>里显示正常，在<span lang=EN-US>FF</span>下全部变形了。其实造成这样问题的原因是你写的<span lang=EN-US>CSS</span>并不标准，可以说你写的<span lang=EN-US>CSS</span>都是根绝<span lang=EN-US>IE</span>的标准来写的，而不是<span lang=EN-US>CSS2.0</span>的国际标准，无论是<span lang=EN-US>IE</span>还是<span lang=EN-US>FF</span>（<span lang=EN-US>3.0</span>版前的我没留意）都是支持<span lang=EN-US>CSS2.0</span>的，但是在技术上，<span lang=EN-US>IE</span>有写模糊功能，可以令到非标准的<span lang=EN-US>CSS</span>布局也能正确解析，一下是我写<span lang=EN-US>CSS</span>代码的五个习惯，我不敢说我这五个习惯都是好习惯，至少我写的<span lang=EN-US>CSS</span>布局不会产生不良效果，也就是我写的<span lang=EN-US>CSS</span>有跨<span lang=EN-US>l</span>浏览器能力。<span lang=EN-US><br><br></span>第一：容器类<span lang=EN-US>DIV</span>必须要有<span lang=EN-US>5</span>个东西<span lang=EN-US>{margin</span>，<span lang=EN-US>padding</span>，<span lang=EN-US>width</span>，<span lang=EN-US>height</span>，<span lang=EN-US>overflow}</span>，什么叫容器类，就是这个<span lang=EN-US>DIV</span>只是用来放内部的<span lang=EN-US>DIV</span>的，也可以说是一个定位的<span lang=EN-US>div..</span>例如：我们经常使用居中，一般是这样做的<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 160%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #4b4b4b; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape id=_x0000_i1025 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></v:imagedata></v:shape></span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: maroon; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">body<br><v:shape id=Codehighlighter1_5_145_Open_Image style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt="" o:spid="_x0000_i1026"><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"></v:imagedata></v:shape><v:shape id=Codehighlighter1_5_145_Closed_Image style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt="" o:spid="_x0000_i1027"><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image003.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></v:imagedata></v:shape></span><span lang=EN-US style="BORDER-RIGHT: gray 1pt solid; PADDING-RIGHT: 0cm; BORDER-TOP: gray 1pt solid; DISPLAY: none; PADDING-LEFT: 0cm; FONT-SIZE: 12pt; BACKGROUND: white; PADDING-BOTTOM: 0cm; BORDER-LEFT: gray 1pt solid; COLOR: #4b4b4b; LINE-HEIGHT: 160%; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-border-alt: solid gray .75pt; mso-hide: all; mso-font-kerning: 0pt">{<v:shape id=_x0000_i1028 style="WIDTH: 11.25pt; HEIGHT: 15pt" type="#_x0000_t75" alt=""> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image004.gif" o:href="http://www.cppblog.com/Images/dot.gif"></v:imagedata></v:shape>}</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">{</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1029 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></v:imagedata></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;font-size</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: blue; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;12px</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1030 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></v:imagedata></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;margin</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: blue; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;0px</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1031 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></v:imagedata></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;padding</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: blue; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;0px</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1032 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></v:imagedata></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;height</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: blue; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;100%</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1033 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></v:imagedata></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: blue; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;100%</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1034 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></v:imagedata></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;overflow</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: blue; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;auto</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1035 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></v:imagedata></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;text-align</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: blue; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;center</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1036 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></v:imagedata></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;display</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: blue; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;block</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1037 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image006.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></v:imagedata></v:shape></span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">}</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: maroon; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=Codehighlighter1_147_278_Open_Image style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt="" o:spid="_x0000_i1038"><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"></v:imagedata></v:shape><v:shape id=Codehighlighter1_147_278_Closed_Image style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt="" o:spid="_x0000_i1039"><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image003.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></v:imagedata></v:shape></span><span lang=EN-US style="BORDER-RIGHT: gray 1pt solid; PADDING-RIGHT: 0cm; BORDER-TOP: gray 1pt solid; DISPLAY: none; PADDING-LEFT: 0cm; FONT-SIZE: 12pt; BACKGROUND: white; PADDING-BOTTOM: 0cm; BORDER-LEFT: gray 1pt solid; COLOR: #4b4b4b; LINE-HEIGHT: 160%; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-border-alt: solid gray .75pt; mso-hide: all; mso-font-kerning: 0pt">/**/</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: green; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">/*---body</span><span style="FONT-SIZE: 12pt; COLOR: green; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">我是作为最顶层容器的<span lang=EN-US>---</span>所以它具备了我需要的所有东西，实现的效果是居中，我加上了<span lang=EN-US>display:&nbsp;block;</span>虽然这个是一个默认属性，但是我们不能保证所有浏览器都是默认，（如果是所有浏览器都默认的，我自己写个浏览器的默认为<span lang=EN-US>none</span>的给你耍）<span lang=EN-US>*/</span></span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: maroon; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1040 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></v:imagedata></v:shape>#body_Div<br><v:shape id=Codehighlighter1_290_391_Open_Image style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt="" o:spid="_x0000_i1041"><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"></v:imagedata></v:shape><v:shape id=Codehighlighter1_290_391_Closed_Image style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt="" o:spid="_x0000_i1042"><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image003.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></v:imagedata></v:shape></span><span lang=EN-US style="BORDER-RIGHT: gray 1pt solid; PADDING-RIGHT: 0cm; BORDER-TOP: gray 1pt solid; DISPLAY: none; PADDING-LEFT: 0cm; FONT-SIZE: 12pt; BACKGROUND: white; PADDING-BOTTOM: 0cm; BORDER-LEFT: gray 1pt solid; COLOR: #4b4b4b; LINE-HEIGHT: 160%; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-border-alt: solid gray .75pt; mso-hide: all; mso-font-kerning: 0pt">{<v:shape id=_x0000_i1043 style="WIDTH: 11.25pt; HEIGHT: 15pt" type="#_x0000_t75" alt=""> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image004.gif" o:href="http://www.cppblog.com/Images/dot.gif"></v:imagedata></v:shape>}</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">{</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1044 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></v:imagedata></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;margin</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: blue; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;0px&nbsp;auto</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1045 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></v:imagedata></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;padding</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: blue; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;0px</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1046 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></v:imagedata></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;text-align</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: blue; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;left</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1047 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></v:imagedata></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;width</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: blue; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;1003px</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1048 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></v:imagedata></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;height</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: blue; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">100%</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1049 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></v:imagedata></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;overflow</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: blue; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">auto</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">;</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=_x0000_i1050 style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt=""><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image006.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></v:imagedata></v:shape></span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">}</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: maroon; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br><v:shape id=Codehighlighter1_393_595_Open_Image style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt="" o:spid="_x0000_i1051"><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"></v:imagedata></v:shape><v:shape id=Codehighlighter1_393_595_Closed_Image style="WIDTH: 8.25pt; HEIGHT: 12pt" type="#_x0000_t75" alt="" o:spid="_x0000_i1052"><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image003.gif" o:href="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></v:imagedata></v:shape></span><span lang=EN-US style="BORDER-RIGHT: gray 1pt solid; PADDING-RIGHT: 0cm; BORDER-TOP: gray 1pt solid; DISPLAY: none; PADDING-LEFT: 0cm; FONT-SIZE: 12pt; BACKGROUND: white; PADDING-BOTTOM: 0cm; BORDER-LEFT: gray 1pt solid; COLOR: #4b4b4b; LINE-HEIGHT: 160%; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-border-alt: solid gray .75pt; mso-hide: all; mso-font-kerning: 0pt">/**/</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: green; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">/*</span><span style="FONT-SIZE: 12pt; COLOR: green; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">这个是核心层，多有的元素基本都是在这个层里的，这个层也具备了我想要的属性，<span lang=EN-US>text-align:&nbsp;left;&nbsp;</span>因为在上层我把文本对齐成为居中，所以这个层我要把它还原为左对齐<span lang=EN-US>margin:&nbsp;0px&nbsp;auto;&nbsp;</span>一般<span lang=EN-US>IE</span>的<span lang=EN-US>CSS</span>编写者不会有这个<span lang=EN-US>auto</span>值的，在<span lang=EN-US>IE</span>会自动，但是在<span lang=EN-US>FF</span>如果少了<span lang=EN-US>auto</span>你将会发现<span lang=EN-US>FF</span>里你的核心部分不是居中的。所以要做到通用，我们就必须要加上<span lang=EN-US>auto</span>值，<span lang=EN-US>IE</span>也支持<span lang=EN-US>auto</span>值<span lang=EN-US>*/</span></span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #4b4b4b; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #4b4b4b; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br></span><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">第二：浮动对象，都拥有独立的父<span lang=EN-US>DIV</span>；关于这点。。有意见的人可能不少，持有的观点就是，<span lang=EN-US>&#8220;</span>你这样做只会令<span lang=EN-US>DIV</span>过分的多，过于复杂<span lang=EN-US>&#8221;</span>，其实，我也不想这样做，但是<span lang=EN-US>- -</span>！<span lang=EN-US>IE</span>对于浮动对象的<span lang=EN-US>{margin</span>，<span lang=EN-US>padding}</span>存在<span lang=EN-US>BUG</span>所以为了减少一切可能的出错，我唯有多花费一点代码，说实在的我只是想它更健康。这个父<span lang=EN-US>DIV</span>主要作用其实就是令到内部浮动对象更可控制，这个父<span lang=EN-US>DIV</span>就是一个单纯的容器<span lang=EN-US>DIV<br><br></span>第三：所有的浮动都需要闭合；这个有经验的人都知道。。用完浮动你肯定需要把它闭合掉的，不闭合，可能不同浏览器在解析的时候会把你的浮动变成向下默认，（可以这样解析：就是元素内部的子元素都默认具有浮动属性）<span lang=EN-US><br><br></span>第四：一个行向浮动如果超过<span lang=EN-US>3</span>个那么请使用<span lang=EN-US>UL</span>来实现浮动<span lang=EN-US><br><br></span>第五：灵活使用类选择，我个人的做法是，所有的<span lang=EN-US>id</span>选择器都是用于布局的，类选择器都是用于呈现效果的，这样做的好处就是，当你想要的效果出现问题的时候，更快速地找到错误。这个是我有意识的把<span lang=EN-US>&#8220;</span>架构<span lang=EN-US>&#8221;</span>和<span lang=EN-US>&#8220;</span>内容<span lang=EN-US>&#8221;</span>分离。</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><o:p></o:p></span></p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/85708.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-05-25 15:29 <a href="http://www.cppblog.com/woaidongmao/archive/2009/05/25/85708.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>40 个轻量级 JavaScript 库</title><link>http://www.cppblog.com/woaidongmao/archive/2009/03/06/75790.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Fri, 06 Mar 2009 15:36:00 GMT</pubDate><guid>http://www.cppblog.com/woaidongmao/archive/2009/03/06/75790.html</guid><wfw:comment>http://www.cppblog.com/woaidongmao/comments/75790.html</wfw:comment><comments>http://www.cppblog.com/woaidongmao/archive/2009/03/06/75790.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/woaidongmao/comments/commentRss/75790.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/woaidongmao/services/trackbacks/75790.html</trackback:ping><description><![CDATA[<p><a title=http://www.comsharp.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K741.aspx href="http://www.comsharp.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K741.aspx">http://www.comsharp.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K741.aspx</a></p>
<p>流行的 JavaScript 库不胜枚举，jQuery, MooTools, Prototype, Dojo, YUI。这些 JavaScript 库功能丰富，加上它们的插件，几乎能胜任任何工作，然而这是有代价的，这些库往往导致你的网页尺寸臃肿。在某些场合，如果你只想完成特定的工作，可以使用一些功能更专一的轻量库，本文介绍了40个非常出色的轻量级 JavaScript 库。
<p>这是本文的第一部分，第二部分请参阅<a href="http://www.comsharp.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K742.aspx">40 个轻量级 JavaScript 库（下）</a>。
<h4>1. 表单相关</h4>
<p><a href="http://www.formassembly.com/wForms/"><strong>wForms</strong></a><br>一个低调的开源项目，简化了绝大多数常用 JavaScript 表单功能，包含可以直接使用的表单验证功能，另外，还包含强大的表单同步以及表单条件判断功能。
<p><a href="http://www.formassembly.com/wForms/"><img height=116 alt=wForms src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-05/wforms.gif" width=480 border=0></a>
<p><a href="http://www.drlongghost.com/validanguage.php"><strong>Validanguage</strong></a><br>又一个低调的 JavaScript 表单验证框架。它拥有集成逻辑，一些设置可以针对全局，单个表单或单个对象。提供两个API，集成 AJAX 支持，缓存，以及回调函数。它提供类似 HTML 的 API 语句，以及面向对象的 JavaScript API 。
<p><a href="http://www.drlongghost.com/validanguage.php"><img height=116 alt=Validanguage src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-05/validanguage.gif" width=480 border=0></a>
<p><a href="http://www.livevalidation.com/"><strong>LiveValidation</strong></a><br>一个轻量的表单验证库。除了传统的验证功能，还提供实时验证，可以一边输入一遍验证。<strong>Ruby on Rails</strong> 用户可能会发现这个库非常好用，因为他们的命名规则和参数十分近似。该库既有独立版本，又有一个 Prototype 版本。
<p><a href="http://www.livevalidation.com/"><img height=116 alt=LiveValidation src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-05/live-validation.gif" width=480></a>
<p><a href="http://yav.sourceforge.net/en/index.html"><strong>yav</strong></a><br>一个强大，灵活，可扩展的表单验证库。支持各种场合，从简单的如日期，电子邮件地址以及整数的验证，到复杂的，如正则表达式。内置 AJAX 支持，输出的错误消息可以定位到对象级。
<p><a href="http://www.pengoworks.com/index.cfm?action=get:qforms"><strong>qForms</strong></a><br>处理表单的整套方案。功能包括各种验证规则，防止多次发布的机制，以及锁定或解锁制定输入框。
<p><a href="http://code.google.com/p/formreform/"><strong>formreform</strong></a><br>不基于 table 的多栏设计向来是一个挑战。这个微型库将传统的表单变成漂亮的多栏形式。<a href="http://code.google.com/p/formreform/"><img height=116 alt=formreform src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-05/formreform.gif" width=480 border=0></a>
<h4>2. 动画相关</h4>
<p><a href="http://fx.inetcat.com/"><strong>$fx()</strong></a><br>一个用来让 HTML 对象运动的轻量库。你可以在一个时间轴上改变任何 CSS 属性，对于复杂动画，你可以将各种效果结合起来，将对象分组，让它们并行运动。
<p><a href="http://fx.inetcat.com/"><img height=116 alt="$fx() JavaScript Animation Library" src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-05/fx-javascript-animations.jpg" width=480 border=0></a>
<p><a href="http://coderepos.org/share/wiki/JSTweener"><strong>JSTweener</strong></a><br>一个生成中间帧的 JavaScript 库，它的 API 类似著名的中间帧引擎 <a href="http://code.google.com/p/tweener/">Tweener</a>。你可以指定动画时间，定义切换效果以及时延。在几乎任何点都可以触动事件。
<p><a href="http://coderepos.org/share/wiki/JSTweener"><img alt=JSTweener src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-05/jstweener.gif" border=0></a>
<p><a href="http://developers.facebook.com/animation/"><strong>Facebook Animation</strong></a><br>一个强大的，用来创建可定制的，基于 CSS 的动画。在 Facebook 动画中，几行代码就可以改善 UI。语法和 FBJS （用于 Facebook 的库）一样。
<p><a href="http://ryanmorr.com/archives/fx-lightweight-and-standalone"><strong>FX</strong></a><br>一个语法类似 YUI 的轻量 JavaScript 库，可以为几乎任何 CSS 属性创建中间帧。支持颜色和滚动动画，为对象设置 to 和 from 值就可以了。
<h4>3. 视觉与图形效果</h4>
<p><a href="http://www.jscharts.com/"><strong>JS charts</strong></a><br>支持柱状图，圆饼图以及简单的曲线图。直接将这个库插入网页，然后从 XML 文件或 JavaScript 数组变量调用数据。PNG 格式，兼容所有主要浏览器。
<p><a href="http://www.jscharts.com/"><img height=116 alt="JS Charts" src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-05/js-charts.jpg" width=480 border=0></a>
<p><a href="http://www.c3dl.org/"><strong>Canvas 3D JS Library (C3DL)</strong></a><br><strong>C3DL</strong> 使 3D 程序的编写变得简单。提供一套数学，场景与 3D 对象类，可以直接在浏览器中开发 3D 内容，不需要很深的 3D 知识。
<p><a href="http://www.c3dl.org/"><img height=116 alt=C3DL src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-05/c3dl.jpg" width=480 border=0></a>
<p><a href="http://ejohn.org/blog/processingjs/"><strong>Processing.js</strong></a><br>这是 <a href="http://processing.org/">Processing 语言</a>在 JavaScript 的移植。2D输出功能丰富。提供了绘图，色彩处理，字体，对象等处理函数。
<p><a href="http://ejohn.org/blog/processingjs/"><img height=116 alt=Processing.js src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-05/processing-js.gif" width=480 border=0></a>
<p><a href="http://raphaeljs.com/"><strong>Rapha?l</strong></a><br>一个让人惊叹的 JavaScript 库，可以在 Web 上实现矢量图。使用 SVG, VML 创建的图形可以被更改或绑定事件。功能极其丰富，包括旋转，动画，缩放等。
<p><a href="http://raphaeljs.com/"><img height=116 alt="Raphael: Vectors With JavaScript" src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-05/raphael-js.jpg" width=480 border=0></a>
<p><a href="http://www.nihilogic.dk/labs/imagefx/"><strong>ImageFX</strong></a><br>该 JavaScript 库为图片添加效果，如虚化，锐化，浮雕，加亮等。ImageFX 使用画布对象实现这些效果，兼容所有主流浏览器。这个库非常容易使用，只要将 .js 库文件插入网页，调用那些函数即可。
<p><a href="http://www.nihilogic.dk/labs/imagefx/"><img height=116 alt=Imagefx src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-05/imagefx.jpg" width=480 border=0></a>
<p><a href="http://www.pixastic.com/"><strong>Pixastic</strong></a><br><strong>Pixastic</strong> 使用 HTML5 画布对象，允许对原始像素进行操作。效果包括去饱和度，灰度级，反转，亮度，对比度调整，色调，饱和度调整，以及浮雕，虚化等效果。因为用到了 HTML 5 的画布对象，因此还无法兼容所有浏览器。
<p><a href="http://cow.neondragon.net/stuff/reflection/"><strong>Reflection.js</strong></a><br>一个很低调的 JavaScript 自动实现倒影效果。倒影的高度，透明度可以调整。支持所有主流浏览器，文件尺寸小于5K。
<p><a href="http://cow.neondragon.net/stuff/reflection/"><img height=116 alt=Reflection.js src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-05/reflection-js.jpg" width=480 border=0></a>
<h4>4. 数据库</h4>
<p><a href="http://taffydb.com/"><strong>Taffy DB</strong></a><br>一个 JavaScript 库，可以看作浏览器中的 SQL Server，或高级数组管理器。在使用了 AJAX 的程序中，可以用作数据库层，可以创建，读取，编辑，删除数据，使用循环，排序以及高级查询。
<p><a href="http://www.activerecordjs.org/"><strong>ActiveRecord.js</strong></a><br>这个库支持 Google Gears 以及 Chrome，Aptana Jaxer, Adobe AIR 以及任何支持 HTML 5 SQL 细则的平台（目前有 Webkit 以及 iPhone）。可以自动创建表，验证和同步数据。
<p><img height=116 alt=ActiveRecord.js src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-05/activerecord-js.gif" width=480>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a title=http://www.comsharp.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K742.aspx href="http://www.comsharp.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K742.aspx">http://www.comsharp.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K742.aspx</a></p>
<p>流行的 JavaScript 库不胜枚举，jQuery, MooTools, Prototype, Dojo, YUI。这些 JavaScript 库功能丰富，加上它们的插件，几乎能胜任任何工作，然而这是有代价的，这些库往往导致你的网页尺寸臃肿。在某些场合，如果你只想完成特定的工作，可以使用一些功能更专一的轻量库，本文介绍了40个非常出色的轻量级 JavaScript 库。
<p>这是本文的第二部分，第一部分参见<a href="http://www.comsharp.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K741.aspx">40 个轻量级 JavaScript 库 （上）</a>。
<h4>5. 字符串与数学函数</h4>
<p><a href="http://www.datejs.com/"><strong>Date.js</strong></a><br>和日期打交道不是件容易事，有很多格式要处理。<strong>Datejs</strong> 可以很好地处理简单或复杂的日期函数。可以将日期解析出诸如&#8220;Next thursday&#8221;，&#8220;+2 years&#8221;一类的格式，也支持所有日期形式，如 2009.01.08, 12/6/2001。
<p><a href="http://www.datejs.com/"><img height=116 alt=Datejs src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/datejs.jpg" width=480 border=0></a>
<p><a href="http://sylvester.jcoglan.com/"><strong>Sylvester</strong></a><br>一个处理矢量和点阵的数学 JavaScript 库，包含多维矢量和点阵建模类，以及在3D空间的一些模型。
<p><a href="http://sylvester.jcoglan.com/"><img height=116 alt=Sylvester src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/sylvester.gif" width=480 border=0></a>
<p><a href="http://ejohn.org/projects/javascript-pretty-date/"><strong>Pretty Date</strong> </a><br>一个很出色的 JavaScript 库，用一种很漂亮，很友好的方式显示日期，如下图所示。
<p><a href="http://ejohn.org/projects/javascript-pretty-date/"><img height=116 alt="Pretty Date" src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/pretty-date.gif" width=480></a>
<p><a href="http://stevenlevithan.com/regex/xregexp/"><strong>XRegExp</strong></a><br>JavaScript 中的 RegExp 对象已经支持正则表达式，<strong>XRegExp</strong> 增加了更多未来浏览器可能包含的功能（ECMAScript 4 - ES4）。该库对 RegExp 对象进行缓存，重用并增加了众多新功能。
<p><a href="http://www.fliquidstudios.com/projects/javascript-url-library/"><strong>JavaScript URL Library</strong></a><br>一个用来处理 URL 的 JavaScript 库，可以对 URL 中的任意部分进行处理。
<h4>6. Fonts</h4>
<p><a href="http://typeface.neocracy.org/"><strong>typeface.js</strong></a><br>这个库可以让你在网页中使用任意字体，但和 <a href="http://www.mikeindustries.com/blog/sifr/">sIFR</a> 以及 <a href="http://facelift.mawhorter.net/">FLIR</a> 这些基于 Flash 的方案不一样，<strong>typeface.js</strong> 100% 基于 JavaScript，只需将你的字体文件上传到一个<a href="http://typeface.neocracy.org/fonts.html">基于 Web 的生成器</a>那里，再将生成的 JavaScript 文件下载回来包含到网页中即可。
<p><a href="http://typeface.neocracy.org/"><img height=116 alt=Typeface.js src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/typeface-js.gif" width=480 border=0></a>
<p><a href="http://cufon.shoqolate.com/generate/"><strong>Cuf&#243;n</strong></a><br>和 typeface.js 很相像，<strong>Cuf&#243;n</strong> 也可以让你在网页中使用任意字体，同样，它也是使用一个生成器，将字体转换成 VML，将生成的 .js 文件包含到网页即可。
<h4>7. 调试与记录</h4>
<p><a href="http://www.gscottolson.com/blackbirdjs/"><strong>Blackbird</strong></a><br>人们经常使用 Alert() 调试 JavaScript 程序，<strong>Blackbird</strong> 提供了一个漂亮的控制台记录，查看，过滤程序的运行。
<p><a href="http://www.gscottolson.com/blackbirdjs/"><img height=116 alt=Blackbird src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/blackbird.jpg" width=288 border=0></a>
<p><a href="http://www.nitobibug.com/"><strong>NitobiBug</strong></a><br>基于浏览器的跨浏览器 javaScript 对象记录与检查工具。
<p><a href="http://www.nitobibug.com/"><img height=116 alt=NitobiBug src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/nitobibug.jpg" width=480 border=0></a>
<p><a href="http://getfirebug.com/lite.html"><strong>Firebug Lite</strong></a><br>目前最好的 JavaScript 调试工具非 <strong>Firebug</strong> 莫属，然而该工具只支持 FireFox，将 <strong>Firebug Lite</strong> .js 文件插入你的网页，就可以在所有浏览器都实现 FireBug 功能。
<p><a href="http://getfirebug.com/lite.html"><img height=116 alt="Firebug Lite" src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/firebug-lite.jpg" width=480 border=0></a>
<h4>8. 其它</h4>
<p><a href="http://code.google.com/p/swfobject/"><strong>swfobject</strong></a><a href="http://www.danvk.org/wp/dragtable/"></a><br>这是一个最受欢迎的对 Flash 对象进行引用的方法。可以生成标准 swf 引用代码，并探测用户播放器版本。如果用户版本不支持，会显示备用内容。
<p><a href="http://code.google.com/p/swfobject/"><img height=116 alt=swfobject src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/swjobject.jpg" width=480 border=0></a>
<p><a href="http://www.kryogenix.org/code/browser/sorttable/"><strong>sorttable</strong></a><strong> 与 </strong><a href="http://www.danvk.org/wp/dragtable/"><strong>dragtable</strong></a><br>不管你喜欢与否，table 仍然是最好的表现数据的方式，但可以更好地利用。<strong>sorttable</strong> 可以让表格数据排序，只需在 table 上加一个 class="sortable" 标志，还可以排除指定的栏。<strong>dragtable</strong> 让表格的栏可以拖动，在表格上加上 class="dragable" 标志即可，这两个类可以结合起来使用，只需加上 class="sortable dragtable" 即可。
<p><a href="http://dillerdesign.com/experiment/DD_roundies/"><strong>DD_roundies</strong></a><strong> 与 </strong><a href="http://www.dillerdesign.com/experiment/DD_belatedPNG/"><strong>DD_belatedPNG</strong></a><br><strong>DD_roundies</strong> 可以不依赖图片实现圆角功能，只面向 IE， 通过 VML 实现，其它浏览器会被略过，因为那些浏览器本身支持 CSS 圆角。
<p><a href="http://dillerdesign.com/experiment/DD_roundies/"><img height=116 alt="JavaScript Rounded Corners" src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/javascript-round-corners.jpg" width=480 border=0></a>
<p><strong>DD_belatedPNG</strong> 是为了解决 IE6 对 PNG 支持不好问题而开发的，不管 PNG 图片用于 src 还是 background-image，<strong>DD_belatedPNG</strong> 都能提供修补。
<p><a href="http://www.leigeber.com/2008/04/custom-javascript-dialog-boxes/"><strong>Custom JavaScript Dialog Boxes</strong></a><br>一个只有 4.5K 的轻量 JavaScript 库，可以创建用户定制对话框，可显示4种类型的消息框，alerts, warnings, prompts, success。可以设定消息框标题，内容，以及过多长时间显示。
<p><a href="http://www.leigeber.com/2008/04/custom-javascript-dialog-boxes/"><img height=116 alt="Custom Dialog Boxes" src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/custom-dialog-boxes.jpg" width=480 border=0></a>
<p><a href="http://www.tommysmind.com/gamejs/"><strong>GameJS</strong></a><br><strong>GameJS</strong> 是微软的 <a href="http://www.xna.com/">XNA 游戏框架</a>在 JavaScript 上的移植，使用 canvas 对象作为输出设备。JavaScript 不是最佳游戏平台，但对那些帧率较低的游戏也没有问题。
<p><a href="http://www.tommysmind.com/gamejs/"><img height=116 alt=GameJS src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/gamejs.jpg" width=480 border=0></a>
<p><a href="http://www.openjs.com/scripts/events/keyboard_shortcuts/"><strong>Shortcuts.js</strong></a><br>从 Google Reader 和 Gmail 开始，Web 程序中的快捷键开始流行起来。<strong>Shorcuts.js</strong> 让快捷键的处理变得简单。
<p><a href="http://mapstraction.com/"><strong>Mapstraction</strong></a><br>有不少地图提供商都提供不同 API，如果你要更换提供商，比如从 Google Maps 到 MapQuest，需要更新代码，<strong>Mapstraction</strong> 提供了常用地图提供商的 API，只需该一行代码就能完成转换。
<p><a href="http://mapstraction.com/"><img height=116 alt=Mapstraction src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/mapstraction.jpg" width=480 border=0></a>
<p><a href="http://amberjack.org/"><strong>Amberjack</strong></a><br>一个只有 4K 的微型 JavaScript 库，可以为你的网站添加漂亮的教程功能，一个模式窗口会以教程的形式显示任意内容，教程中的步骤可以通过手工编码实现或<a href="http://amberjack.org/wizard/">在线自动生成</a>。可以使用<a href="http://amberjack.org/skins/">主题</a>或 CSS 控制内容的格式。
<p><a href="http://amberjack.org/"><img height=116 alt=Amberjack src="http://www.comsharp.com/Writable/Resource/_random_/2009-03-06/amberjack.jpg" width=480 border=0></a>
<p><a href="http://jsload.net/"><strong>JsLoad</strong></a><br>JsLoad 可以从 Google server 远程加载各种 JavaScript 库，可以自动加载各种版本的支撑库。</p>
<img src ="http://www.cppblog.com/woaidongmao/aggbug/75790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/woaidongmao/" target="_blank">肥仔</a> 2009-03-06 23:36 <a href="http://www.cppblog.com/woaidongmao/archive/2009/03/06/75790.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>