??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品久久久天堂,亚洲日产韩国一二三四区,亚洲精品高清国产麻豆专区http://www.tkk7.com/Rookie/archive/2008/01/18/176330.htmlzhhang920zhhang920Fri, 18 Jan 2008 13:01:00 GMThttp://www.tkk7.com/Rookie/archive/2008/01/18/176330.htmlhttp://www.tkk7.com/Rookie/comments/176330.htmlhttp://www.tkk7.com/Rookie/archive/2008/01/18/176330.html#Feedback0http://www.tkk7.com/Rookie/comments/commentRss/176330.htmlhttp://www.tkk7.com/Rookie/services/trackbacks/176330.html昨天弄servlet实现搜烦引擎前端Q发现google 搜烦参数有很多参敎ͼ不明白,大家来看看,知道的顺便告我一下;

http://www.google.cn/search?complete=1&hl=zh-CN&newwindow=1&q=google&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=-1&oq=

complete
hlQ区?br /> newwindow
qQ查询关键字
btnG
meta
aq
oq


http://www.google.cn/search?会蟩转到http://www.google.cn/webhp面Q?br /> http://www.google.cn/search?q=123可以搜索,搞不懂;


 



zhhang920 2008-01-18 21:01 发表评论
]]>
SERVLET 学习(? SERVLET技术概q?/title><link>http://www.tkk7.com/Rookie/archive/2008/01/18/176327.html</link><dc:creator>zhhang920</dc:creator><author>zhhang920</author><pubDate>Fri, 18 Jan 2008 12:51:00 GMT</pubDate><guid>http://www.tkk7.com/Rookie/archive/2008/01/18/176327.html</guid><wfw:comment>http://www.tkk7.com/Rookie/comments/176327.html</wfw:comment><comments>http://www.tkk7.com/Rookie/archive/2008/01/18/176327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Rookie/comments/commentRss/176327.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Rookie/services/trackbacks/176327.html</trackback:ping><description><![CDATA[一QSERVLET 作用<br /> d客户E序发送来的显式数?表单数据)Q?br /> d客户E序发送来的隐式数?h报头)Q?br /> 生成相应的结果;<br /> 发送显式的数据l客L序(HTMLQ;<br /> 发送隐式的数据l客L?状态代码和响应报头)Q?br /> <br /> 优点Q高效,便利Q功能强大,可移植性强Q花费少Q安?br /> <br /> 二,SERVLET 生命周期<br /> initQ仅在servlet首次载入时执行一ơ。不是每ơ请求都要调用?br /> serviceQ在新线E中由服务器为每个请求而调用。发送到doGetQdoPost{。不要覆盖这个方法!<br /> doGet, doPost, doXxxQ处理GET, POST, {请求。覆盖这些方法以提供期望的行为?br /> destroyQ在服务器删除servlet的实例时调用。不是每ơ请求后都调用?br /> <br /> 三,例子<br /> 下面是看《Servlet与JSP核心~程W二版》测试例子;<br /> l大家推荐一个网站:<a >http://chinesedocument.com/</a><br /> 看名字就应该知道关于什么的了,上面东西挺多的,不错Q?br /> <br /> 说明Q?br /> chapter2,chaper3:servlet基础Q请求参敎ͼ<br /> chapter4Qrequesth头查看,postQget方式Q?br /> chapter5: 单搜索引擎前端,sendErrorQsendRedirect试Q测试用例:<br />                         “http://www.google.cn/search?q=”    “sendRedirect”<br /> chapter6QContentType试<br /> chapter7Qcookie试Qservlet:RegistrationForm 单注册页面,Q用cookie的值预先填写表单的 字段Q如果未扑ֈ相应的cookie则用默认|Registration servletQ基于接收到的请求参数创建cookieQ如果得到所有的参数则显C些|如果M参数~失Q则重定向到表单Q?br /> chapter8Qsession实现一个简单购物RQ流E:登陆QLogin servletQ?-商品列表QShopForm servletQ?lt;---->挑选(AddItem servletQ?br /> <br /> 试工程<a href="/Files/Rookie/servlet.rar">servlet.rar</a><br /> <br /> ׃jar文g太大Q工E中没有jar保,可自己添加;<br /> 工程中用到有Qservlet-api.jarQdom4j-1.6.1.jarQjaxen-1.1-beta-6.jarQpull-parser-2.1.10.jarQjaxme-api-0.3.jarQjsr173_1.0_api.jarQmsv-20030807.jarQrelaxngDatatype-20030807.jarQisorelax-20030108.jarQjtidy-4aug2000r7-dev.jarQxsdlib-20030807.jarQxpp3-1.1.3.3.jar<br /> ׃购物车中用到了解析xmlQ所以Jar包一下就多了Q?br /> <br /> 购物车没有数据库Q我用dom4j解析xmlQ然后把数据存放在session中,觉得很别扭;对dom4j不是很熟悉,解析那部分做的不好,大家l多提提意见Q书中有个refresh例子Q还没看明白Q说看明白实Cl我发一份啊Q? <img src ="http://www.tkk7.com/Rookie/aggbug/176327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Rookie/" target="_blank">zhhang920</a> 2008-01-18 20:51 <a href="http://www.tkk7.com/Rookie/archive/2008/01/18/176327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SERVLET 学习(一) http协议http://www.tkk7.com/Rookie/archive/2008/01/18/176314.htmlzhhang920zhhang920Fri, 18 Jan 2008 11:46:00 GMThttp://www.tkk7.com/Rookie/archive/2008/01/18/176314.htmlhttp://www.tkk7.com/Rookie/comments/176314.htmlhttp://www.tkk7.com/Rookie/archive/2008/01/18/176314.html#Feedback4http://www.tkk7.com/Rookie/comments/commentRss/176314.htmlhttp://www.tkk7.com/Rookie/services/trackbacks/176314.html      HTTP(Hypertext Transfer Protocol, 文本传输协?Q用于从WWW服务器传输超文本到本地浏览器的传输协议。你可以通过协议定制传送的内容Q从而减网l传输。HTTP协议是以TCP/IP为基的高层协议。现在广泛用的版本HTTP/1.1?br />       HTTP协议Zh/响应模式(Request/Response).客户与服务器建立q接后,按照协议规定格式Q发送请求到服务器,客户得到h后,q回响应信息l客戗HTTP使用的端口号Q通常?0?br /> 二,URL
HTTP URL (包含了用于查找某个资源的_的信?的格式如下:
http://host[":"port][abs_path]
http表示要通过HTTP协议来定位网l资源;host表示合法的InternetL域名或者IP地址Qport指定一个端口号QؓI则使用~省端口80Qabs_path指定h资源的URIQ如果URL中没有给出abs_pathQ那么当它作求URIӞ必须?#8220;/”的Ş式给出,通常q个工作览器自动帮我们完成?br /> http://www.microsoft.com/china/index.htm。它的含义如下:
1.http://Q代表超文本传输协议Q通知microsoft.com服务器显CWeb,通常不用输入Q?br /> 2.wwwQ代表一个Web(万维|?服务器;
3.Microsoft.com/Q这是装有网늚服务器的域名Q或站点服务器的名称Q?br /> 4.China/Qؓ该服务器上的子目录,好像我们的文g夹;
5.Index.htmQindex.htm是文件夹中的一个HTML文g(|页)?br /> 三,HTTP 工作原理
  HTTP协议是基于请?响应范式?相当于客h/服务?。一个客h与服务器建立q接后,发送一个请求给服务器,h方式的格式ؓQ统一资源标识W?URL)、协议版本号Q后ҎMIME信息包括h修饰W、客h信息和可能的内容。服务器接到h后,l予相应的响应信息,其格式ؓ一个状态行Q包括信息的协议版本受一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内宏V?br />   许多HTTP通讯是由一个用户代理初始化的ƈ且包括一个申请在源服务器上资源的h。最单的情况可能是在用户代理和服务器之间通过一个单独的q接来完成。在Internet上,HTTP通讯通常发生在TCP/IPq接之上。缺省端口是TCP80Q但其它的端口也是可用的。但qƈ不预C着HTTP协议在Internet或其它网l的其它协协议之上才能完成。HTTP只预C着一个可靠的传输?br />   q个q程好像我们打电话订货一P我们可以打电话给商家Q告诉他我们需要什么规格的商品Q然后商家再告诉我们什么商品有货,什么商品缺货。这些,我们是通过电话U用电话联系(HTTP是通过TCP/IP)Q当然我们也可以通过传真Q只要商安边也有传真?br /> 四,HTTP hQ应{组?br /> http://www.cnpaf.net/Class/HTTP/0532918532641885.html

zhhang920 2008-01-18 19:46 发表评论
]]>
XML 学习(? XML ~辑?XMLSpyhttp://www.tkk7.com/Rookie/archive/2008/01/14/175280.htmlzhhang920zhhang920Mon, 14 Jan 2008 10:48:00 GMThttp://www.tkk7.com/Rookie/archive/2008/01/14/175280.htmlhttp://www.tkk7.com/Rookie/comments/175280.htmlhttp://www.tkk7.com/Rookie/archive/2008/01/14/175280.html#Feedback0http://www.tkk7.com/Rookie/comments/commentRss/175280.htmlhttp://www.tkk7.com/Rookie/services/trackbacks/175280.htmlAltova XMLSpy© 2005 是业界标准XML的开发环境,可用于涉及XML、XML Schema、XSLT、XQuery、SOAP、WSDL和Web服务技术的企业U应用的设计、编辑和调试。它是提高J2EE?NET和数据库开发h员开发效率的l极利器?


一个中文破解下载地址Q?a title="XMLSpy2006" >XMLSpy2006

中文用户手册Q?a >http://bbs.xml.org.cn/xmlspy2005/spyentdefaulthomepage.htm
主要内容有:XML的编辑与验证Q?span style="font-size: 10pt; color: #000000; font-family: Helvetica,Arial">Schema/DTD的编辑与验证Q?span style="font-size: 10pt; color: #000000; font-family: Helvetica,Arial">XSLT的编辑与转换

zhhang920 2008-01-14 18:48 发表评论
]]>
XML 学习(? DTD XML与Schema基础http://www.tkk7.com/Rookie/archive/2008/01/14/175277.htmlzhhang920zhhang920Mon, 14 Jan 2008 10:37:00 GMThttp://www.tkk7.com/Rookie/archive/2008/01/14/175277.htmlhttp://www.tkk7.com/Rookie/comments/175277.htmlhttp://www.tkk7.com/Rookie/archive/2008/01/14/175277.html#Feedback0http://www.tkk7.com/Rookie/comments/commentRss/175277.htmlhttp://www.tkk7.com/Rookie/services/trackbacks/175277.html一QXML Schema
1Q定义:XML Schema 是基于XML 的DTD 替代者,用来描述 XML 文档的结构;

2Q优点:支持数据cdQ?XML 语法Q可保护数据通信Q可扩展Q?br /> 3Q简单类型:
易元素:易元素指那些仅包含文本的元素。它不会包含M其他的元素或属性?lt;xs:element name="color" type="xs:string" default="red"/>Q确实,固定QfixedQ;
属性:属性均被作为简易类型来声明Q?lt;xs:attribute name="xxx" type="yyy"/>QuseQrequiredQ;
XSD 限定Q用于ؓ XML 元素或者属性定义可接受的倹{对 XML 元素的限定被UCؓ facetQ?br /> 4Q复杂类型:
复合元素Q复合元素指包含其他元素?或属性的 XML 元素Q空元素 Q包含其他元素的元素 Q仅包含文本的元?Q包含元素和文本的元素;
指示器:通过指示器,我们可以元素在文中被用的方式?br /> Order 指示器:All QChoice QSequence Q?br /> Occurrence 指示器:maxOccurs QminOccurs Q?br /> Group 指示器:Group name QattributeGroup name Q?br /> Group 指示器;
<anyAttribute> 元素使我们有能力通过未被 schema 规定的属性来扩展 XML 文Q?br /> <any> 元素使我们有能力通过未被 schema 规定的元素来拓展 XML 文档Q?br /> 二,DTDQ?/strong>
DTDQ文档类型定义)的作用是定义 XML 文档的合法构建模块。它使用一pd的合法元素来定义文l构?br /> 元素Q属性,实体Q?br /> 三,XML Schema ?DTD 比较Q?br /> http://www-128.ibm.com/developerworks/cn/xml/x-sd/index.html

zhhang920 2008-01-14 18:37 发表评论
]]>
XML 学习(? XSLT 例子http://www.tkk7.com/Rookie/archive/2008/01/11/174716.htmlzhhang920zhhang920Fri, 11 Jan 2008 13:03:00 GMThttp://www.tkk7.com/Rookie/archive/2008/01/11/174716.htmlhttp://www.tkk7.com/Rookie/comments/174716.htmlhttp://www.tkk7.com/Rookie/archive/2008/01/11/174716.html#Feedback2http://www.tkk7.com/Rookie/comments/commentRss/174716.htmlhttp://www.tkk7.com/Rookie/services/trackbacks/174716.html阅读全文

zhhang920 2008-01-11 21:03 发表评论
]]>
XML 学习(? XSLT 基础http://www.tkk7.com/Rookie/archive/2008/01/11/174714.htmlzhhang920zhhang920Fri, 11 Jan 2008 12:48:00 GMThttp://www.tkk7.com/Rookie/archive/2008/01/11/174714.htmlhttp://www.tkk7.com/Rookie/comments/174714.htmlhttp://www.tkk7.com/Rookie/archive/2008/01/11/174714.html#Feedback0http://www.tkk7.com/Rookie/comments/commentRss/174714.htmlhttp://www.tkk7.com/Rookie/services/trackbacks/174714.html一QXSLT ?
XSLT 是一U用于将 XML 文转换?XHTML 文或其?XML 文档的语a?br />

XSLT ?XSL 转换QXSL TransformationsQ,
XSLT ?XSL 中最重要的部分,
XSLT 可将一U?XML 文档转换为另外一U?XML 文档Q?br /> XSLT 使用 XPath ?XML 文档中进行导航,
二,XSLT  元素
<xsl:template> 元素Q?lt;xsl:template> 元素用于构徏模板。match 属性用于关?XML 元素和模ѝmatch 属性也可用来ؓ整个文定义模板。match 属性的值是 XPath 表达式(举例Qmatch="/" 定义整个文Q;
<xsl:value-of> 元素Q?lt;xsl:value-of> 元素用于提取某个选定节点的|q把值添加到转换的输出流?br /> <xsl:for-each> 元素Q?lt;xsl:for-each> 元素可用于选取某个指定节点集的每个 XML 元素Q?br /> <xsl:sort> 元素Q用于对l果q行排序Q?br /> <xsl:if> 元素Q用于放|针?XML 文g内容的条件测试;
<xsl:choose> 元素Q用于结?<xsl:when> ?<xsl:otherwise> 来表辑֤重条件测试;
<xsl:apply-templates> 元素Q?lt;xsl:apply-templates> 元素可把一个模板应用于当前的元素或者当前元素的子节炏V假如我们向 <xsl:apply-templates> 元素d一?select 属性,此元素就会仅仅处理与属性值匹配的子元素。我们可以?select 属性来规定子节点被处理的顺序;



zhhang920 2008-01-11 20:48 发表评论
]]>XML 学习(? xPath例子http://www.tkk7.com/Rookie/archive/2008/01/10/174399.htmlzhhang920zhhang920Thu, 10 Jan 2008 11:19:00 GMThttp://www.tkk7.com/Rookie/archive/2008/01/10/174399.htmlhttp://www.tkk7.com/Rookie/comments/174399.htmlhttp://www.tkk7.com/Rookie/archive/2008/01/10/174399.html#Feedback0http://www.tkk7.com/Rookie/comments/commentRss/174399.htmlhttp://www.tkk7.com/Rookie/services/trackbacks/174399.html 其中loadxmldoc.js和book.xml ?XML 学习(? DOM 解析- Node 对象的属?一中一P
<html>
    
<head>
        
<script src="../loadxmldoc.js"></script>
        
<script>
            
var xmlDoc = loadXMLDoc("../book/book.xml");
            
//只有XML解析器的一个实例才能调?nbsp;selectNodesQ) Q?Q?/span>
            var x=xmlDoc.selectNodes("/bookstore/book");//bookstore元素下的所有book子元?/span>
            //var x=xmlDoc.selectNodes("bookstore");//获得bookstore元素
            //var x=xmlDoc.selectNodes("book");//什么都没获得?Q?Q?nbsp;       
            //var x=xmlDoc.selectNodes(".");//获得当前元素Q?/span>
            //var x=xmlDoc.selectNodes("node()");//获得 所有元素,包括文声明Q?/span>

            
//var x=xmlDoc.selectNodes("http://author");//获得文中所有的author元素Q?/span>
            //var x=xmlDoc.selectNodes("/bookstore/book[2]/author[2]");//bookstoreW三个book子元素的W三个author元素
            //var x=xmlDoc.selectNodes("http://@category");//获得有属性category的所有元?/span>
            //var x=xmlDoc.selectNodes("/bookstore/book[last()]");//position()<3 报错 函数不存在?Q?

            
//var x=xmlDoc.selectNodes("/bookstore/book[@category='WEB']/author");
            //bookstore的子元素中category属性ؓWEB的所有book元素的author元素
            
            
//var x=xmlDoc.selectNodes("/bookstore/book/*");//bookstore子元素中book的所有子元素
            //var x=xmlDoc.selectNodes("http://*");//获得文元素

            
//var x=xmlDoc.selectNodes("http://title | //price");//所有的title元素和所有的price元素
        
            
for(i=0;i<x.length;i++)
            {
                document.write(
"<xmp>" + x.item(i).xml + "</xmp>");
                document.write(
"<br/>");
            }             
        
</script>
    
</head>
</html>

其中主要用到?xPath 语法和少量的q算W;
关于坐标_函数试都报错;

zhhang920 2008-01-10 19:19 发表评论
]]>
XML 学习(? xPath基础http://www.tkk7.com/Rookie/archive/2008/01/10/174395.htmlzhhang920zhhang920Thu, 10 Jan 2008 10:57:00 GMThttp://www.tkk7.com/Rookie/archive/2008/01/10/174395.htmlhttp://www.tkk7.com/Rookie/comments/174395.htmlhttp://www.tkk7.com/Rookie/archive/2008/01/10/174395.html#Feedback0http://www.tkk7.com/Rookie/comments/commentRss/174395.htmlhttp://www.tkk7.com/Rookie/services/trackbacks/174395.html一Q简介:XPath 使用路径表达式来选取 XML 文中的节点或者节炚wQ这些\径表辑ּ和我们在常规的电脑文件系l中看到的表辑ּ非常怼。XPath 使用路径表达式在 XML 文中进行导?QXPath 包含一个标准函数库 QXPath ?XSLT 中的主要元素 ?br /> 二,XPath 术语
节点QNodeQ:?XPath 中,有七U类型的节点Q元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作ؓ节点树来对待的。树的根被称为文节Ҏ者根节点?

基本|或称原子|Atomic valueQ:基本值是无父或无子的节点?br /> 目QItemQ:目是基本值或者节炏V?br />
节点关系
ӞParentQ:每个元素以及属性都有一个父Q?br /> 子(ChildrenQ:元素节点可有零个、一个或多个子,
同胞QSiblingQ:拥有相同的父的节?br /> 先辈QAncestorQ:某节点的父、父的父Q等{,
后代QDescendantQ:某个节点的子Q子的子Q等{;

三,XPath 语法

XPath 使用路径表达式来选取 XML 文中的节点或节炚w。节Ҏ通过沿着路径 (path) 或者步 (steps) 来选取的,
nodename   选取此节点的所有子节点Q?br /> /        从根节点选取 Q?br /> //       从匹配选择的当前节炚w择文中的节点Q而不考虑它们的位|?Q?br /> .        选取当前节点 Q?br /> ..       选取当前节点的父节点 Q?br /> @     选取属?Q?/p>
谓语QPredicatesQ:谓语用来查找某个特定的节Ҏ者包含某个指定的值的节点。谓语被嵌在Ҏ号中。函数或者表辑ּQ?br />

选取未知节点QXPath 通配W可用来选取未知?XML 元素?br /> *       匚wM元素节点
@*    匚wM属性节?
node()  匚wMcd的节?

选取若干路径Q通过在\径表辑ּ中?#8220;|”q算W,您可以选取若干个\径?/p>

四,XPath AxesQ坐标uQ:轴可定义某个相对于当前节点的节点集?/p>

ancestor      选取当前节点的所有先辈(父、祖父等Q?
ancestor-or-self  选取当前节点的所有先辈(父、祖父等Q以及当前节Ҏw?
attribute     选取当前节点的所有属?
child       选取当前节点的所有子元素?
descendant     选取当前节点的所有后代元素(子、孙{)?
descendant-or-self 选取当前节点的所有后代元素(子、孙{)以及当前节点本n?
following     选取文档中当前节点的l束标签之后的所有节炏V?
namespace     选取当前节点的所有命名空间节?
parent       选取当前节点的父节点?
preceding     选取文中当前节点的开始标{之前的所有节炏V?
preceding-sibling 选取当前节点之前的所有同U节炏V?
self        选取当前节点?

步的语法Q?轴名U?:节点试[谓语]


五,XPath q算W:XPath 表达式可q回节点集、字W串、逻辑g及数字?br /> ?+)Q减(-)Q乘(*)Q除(div)Q等?=)Q不{于(!=)Q大?>)Q小?<)Q大于等?>=)Q小于等?<=)Q与(and)Q或(or)Q余(mod)Q?

zhhang920 2008-01-10 18:57 发表评论
]]>
XML 学习(? DOM 解析- Node 对象的属?/title><link>http://www.tkk7.com/Rookie/archive/2008/01/09/174115.html</link><dc:creator>zhhang920</dc:creator><author>zhhang920</author><pubDate>Wed, 09 Jan 2008 13:05:00 GMT</pubDate><guid>http://www.tkk7.com/Rookie/archive/2008/01/09/174115.html</guid><wfw:comment>http://www.tkk7.com/Rookie/comments/174115.html</wfw:comment><comments>http://www.tkk7.com/Rookie/archive/2008/01/09/174115.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Rookie/comments/commentRss/174115.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Rookie/services/trackbacks/174115.html</trackback:ping><description><![CDATA[下午?a title="万维|联?W3C)" >W3C</a>看了半天XML DOM 教程Q弄了个例子Q整理下Q?<a title="W3C" >W3C</a>上有所有的|站教程Q有一个对应的中文|站<a >http://www.w3school.com.cn/index.html</a>Q不q有些例子的q接打不开)<br /> <strong style="color: red">loadxmldoc.js</strong>Q只有一个函数loadXMLDoc(dname)Q单Cؓ解析XML文g名,q回一个XMLDOM对象Q? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">function loadXMLDoc(dname)<br /> {<br />     var xmlDoc;<br />     </span><span style="color: #008000">//</span><span style="color: #008000"> code for IE</span><span style="color: #008000"><br /> </span><span style="color: #000000">    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (window.ActiveXObject)<br />     {<br />         xmlDoc</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> ActiveXObject(</span><span style="color: #000000">"</span><span style="color: #000000">Microsoft.XMLDOM</span><span style="color: #000000">"</span><span style="color: #000000">);<br />     }<br />     </span><span style="color: #008000">//</span><span style="color: #008000"> code for Mozilla, Firefox, Opera, etc.</span><span style="color: #008000"><br /> </span><span style="color: #000000">    </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (document.implementation </span><span style="color: #000000">&&</span><span style="color: #000000"> document.implementation.createDocument)<br />     {<br />         xmlDoc</span><span style="color: #000000">=</span><span style="color: #000000">document.implementation.createDocument(</span><span style="color: #000000">""</span><span style="color: #000000">,</span><span style="color: #000000">""</span><span style="color: #000000">,</span><span style="color: #0000ff">null</span><span style="color: #000000">);<br />     }<br />     </span><span style="color: #0000ff">else</span><span style="color: #000000"><br />     {<br />         alert(</span><span style="color: #000000">'</span><span style="color: #000000">Your browser cannot handle this script</span><span style="color: #000000">'</span><span style="color: #000000">);<br />     }<br />     xmlDoc.async</span><span style="color: #000000">=</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />     xmlDoc.load(dname);<br />     </span><span style="color: #0000ff">return</span><span style="color: #000000">(xmlDoc);<br /> }</span></div> <strong style="color: red">book.xml</strong>待解析XML文g<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000"><?</span><span style="color: #000000">xml version</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">1.0</span><span style="color: #000000">"</span><span style="color: #000000"> encoding</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">ISO-8859-1</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">?></span><span style="color: #000000"> <br /> </span><span style="color: #000000"><!--</span><span style="color: #000000">  Edited with XML Spy v2007 (http:</span><span style="color: #008000">//</span><span style="color: #008000">www.altova.com) --> </span><span style="color: #008000"><br /> </span><span style="color: #000000"><</span><span style="color: #000000">bookstore</span><span style="color: #000000">></span><span style="color: #000000"><br />   </span><span style="color: #000000"><</span><span style="color: #000000">book category</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">COOKING</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"><br />   </span><span style="color: #000000"><</span><span style="color: #000000">title lang</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">en</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000">Everyday Italian</span><span style="color: #000000"></</span><span style="color: #000000">title</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000">Giada De Laurentiis</span><span style="color: #000000"></</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">year</span><span style="color: #000000">></span><span style="color: #000000">2005</span><span style="color: #000000"></</span><span style="color: #000000">year</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">price</span><span style="color: #000000">></span><span style="color: #000000">30.00</span><span style="color: #000000"></</span><span style="color: #000000">price</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"></</span><span style="color: #000000">book</span><span style="color: #000000">></span><span style="color: #000000"><br />   </span><span style="color: #000000"><</span><span style="color: #000000">book category</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">CHILDREN</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"><br />   </span><span style="color: #000000"><</span><span style="color: #000000">title lang</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">en</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000">Harry Potter</span><span style="color: #000000"></</span><span style="color: #000000">title</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000">J K. Rowling</span><span style="color: #000000"></</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">year</span><span style="color: #000000">></span><span style="color: #000000">2005</span><span style="color: #000000"></</span><span style="color: #000000">year</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">price</span><span style="color: #000000">></span><span style="color: #000000">29.99</span><span style="color: #000000"></</span><span style="color: #000000">price</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"></</span><span style="color: #000000">book</span><span style="color: #000000">></span><span style="color: #000000"><br />   </span><span style="color: #000000"><</span><span style="color: #000000">book category</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">WEB</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"><br />   </span><span style="color: #000000"><</span><span style="color: #000000">title lang</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">en</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000">XQuery Kick Start</span><span style="color: #000000"></</span><span style="color: #000000">title</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000">James McGovern</span><span style="color: #000000"></</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000">Per Bothner</span><span style="color: #000000"></</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000">Kurt Cagle</span><span style="color: #000000"></</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000">James Linn</span><span style="color: #000000"></</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000">Vaidyanathan Nagarajan</span><span style="color: #000000"></</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">year</span><span style="color: #000000">></span><span style="color: #000000">2003</span><span style="color: #000000"></</span><span style="color: #000000">year</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">price</span><span style="color: #000000">></span><span style="color: #000000">49.99</span><span style="color: #000000"></</span><span style="color: #000000">price</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"></</span><span style="color: #000000">book</span><span style="color: #000000">></span><span style="color: #000000"><br />   </span><span style="color: #000000"><</span><span style="color: #000000">book category</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">WEB</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"><br />   </span><span style="color: #000000"><</span><span style="color: #000000">title lang</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">en</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000">Learning XML</span><span style="color: #000000"></</span><span style="color: #000000">title</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000">Erik T. Ray</span><span style="color: #000000"></</span><span style="color: #000000">author</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">year</span><span style="color: #000000">></span><span style="color: #000000">2003</span><span style="color: #000000"></</span><span style="color: #000000">year</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"><</span><span style="color: #000000">price</span><span style="color: #000000">></span><span style="color: #000000">39.95</span><span style="color: #000000"></</span><span style="color: #000000">price</span><span style="color: #000000">></span><span style="color: #000000"> <br />   </span><span style="color: #000000"></</span><span style="color: #000000">book</span><span style="color: #000000">></span><span style="color: #000000"><br /> </span><span style="color: #000000"></</span><span style="color: #000000">bookstore</span><span style="color: #000000">></span></div> <span style="color: red"><strong>book.html </strong></span> 试面<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000"><</span><span style="color: #000000">html</span><span style="color: #000000">></span><span style="color: #000000"><br />     </span><span style="color: #000000"><</span><span style="color: #000000">head</span><span style="color: #000000">></span><span style="color: #000000"><br />         </span><span style="color: #000000"><</span><span style="color: #000000">script src</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">../loadxmldoc.js</span><span style="color: #000000">"</span><span style="color: #000000">></</span><span style="color: #000000">script</span><span style="color: #000000">></span><span style="color: #000000"><br />         </span><span style="color: #000000"><</span><span style="color: #000000">script</span><span style="color: #000000">></span><span style="color: #000000"><br />             </span><span style="color: #0000ff">var</span><span style="color: #000000"> xmlDoc </span><span style="color: #000000">=</span><span style="color: #000000"> loadXMLDoc(</span><span style="color: #000000">"</span><span style="color: #000000">book.xml</span><span style="color: #000000">"</span><span style="color: #000000">);<br />             </span><span style="color: #0000ff">function</span><span style="color: #000000"> getFirstChild(doc){<br />                      </span><span style="color: #0000ff">var</span><span style="color: #000000"> x </span><span style="color: #000000">=</span><span style="color: #000000"> doc.firstChild;<br />                      </span><span style="color: #0000ff">while</span><span style="color: #000000">(x.nodeType</span><span style="color: #000000">!=</span><span style="color: #000000">1</span><span style="color: #000000">){<br />                              x.nextSibling;<br />                      }<br />                      </span><span style="color: #0000ff">return</span><span style="color: #000000"> x;<br />              }<br />              </span><span style="color: #0000ff">function</span><span style="color: #000000"> getLastChild(doc){<br />                      </span><span style="color: #0000ff">var</span><span style="color: #000000"> x </span><span style="color: #000000">=</span><span style="color: #000000"> doc.lastChild;<br />                      </span><span style="color: #0000ff">while</span><span style="color: #000000">(x.nodeType</span><span style="color: #000000">!=</span><span style="color: #000000">1</span><span style="color: #000000">){<br />                              x.previousSibling;<br />                      }<br />                      </span><span style="color: #0000ff">return</span><span style="color: #000000"> x;<br />              }<br />              <br />             </span><span style="color: #0000ff">var</span><span style="color: #000000"> first </span><span style="color: #000000">=</span><span style="color: #000000"> getFirstChild(xmlDoc.documentElement);<br />             document.write(</span><span style="color: #000000">"</span><span style="color: #000000">first.nodeName:</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> first.nodeName);<br />             document.write(</span><span style="color: #000000">"</span><span style="color: #000000">first.nodeType:</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> first.nodeType </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br/><br/></span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <br />             </span><span style="color: #0000ff">var</span><span style="color: #000000"> last </span><span style="color: #000000">=</span><span style="color: #000000"> getLastChild(xmlDoc.documentElement);<br />             document.write(</span><span style="color: #000000">"</span><span style="color: #000000">last.nodeName:</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> last.nodeName);<br />             document.write(</span><span style="color: #000000">"</span><span style="color: #000000">last.nodeType:</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> last.nodeType </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br/><br/></span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <br />             </span><span style="color: #0000ff">var</span><span style="color: #000000"> test </span><span style="color: #000000">=</span><span style="color: #000000"> xmlDoc.getElementsByTagName(</span><span style="color: #000000">"</span><span style="color: #000000">title</span><span style="color: #000000">"</span><span style="color: #000000">);<br />             </span><span style="color: #0000ff">var</span><span style="color: #000000"> parent </span><span style="color: #000000">=</span><span style="color: #000000"> test.item(</span><span style="color: #000000">0</span><span style="color: #000000">).parentNode;<br />             document.write(</span><span style="color: #000000">"</span><span style="color: #000000">parent.nodeName:</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> parent.nodeName </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br/><br/></span><span style="color: #000000">"</span><span style="color: #000000">);<br />             document.write(</span><span style="color: #000000">"</span><span style="color: #000000">textContent:</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> parent.textContent </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br/><br/></span><span style="color: #000000">"</span><span style="color: #000000">);<br />             document.write(</span><span style="color: #000000">"</span><span style="color: #000000">text:</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> parent.text </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br/><br/></span><span style="color: #000000">"</span><span style="color: #000000">);<br />             document.write(</span><span style="color: #000000">"</span><span style="color: #000000">xml:</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><xmp></span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> parent.xml </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"></xmp></span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br/><br/></span><span style="color: #000000">"</span><span style="color: #000000">);<br />                         <br />             document.write(xmlDoc.nodeName);<br />             document.write(xmlDoc.nodeType </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">  </span><span style="color: #000000">"</span><span style="color: #000000">);<br />             document.write(xmlDoc.childNodes[</span><span style="color: #000000">0</span><span style="color: #000000">].nodeValue </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br/></span><span style="color: #000000">"</span><span style="color: #000000">);            <br />             </span><span style="color: #0000ff">var</span><span style="color: #000000"> x </span><span style="color: #000000">=</span><span style="color: #000000"> xmlDoc.documentElement;</span><span style="color: #008000">//</span><span style="color: #008000">获得xml文g文档元素Q即bookstore</span><span style="color: #008000"><br /> </span><span style="color: #000000">            document.write(x.nodeName);<br />             document.write(x.nodeType </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">  </span><span style="color: #000000">"</span><span style="color: #000000">);<br />             document.write(x.childNodes.item(</span><span style="color: #000000">0</span><span style="color: #000000">).nodeValue </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br/></span><span style="color: #000000">"</span><span style="color: #000000">);            <br />             </span><span style="color: #0000ff">var</span><span style="color: #000000"> child </span><span style="color: #000000">=</span><span style="color: #000000"> x.childNodes;</span><span style="color: #008000">//</span><span style="color: #008000">获得 bookstore所有的子元?nbsp;book</span><span style="color: #008000"><br /> </span><span style="color: #000000">            </span><span style="color: #008000">//</span><span style="color: #008000">昄bookstore所有元?/span><span style="color: #008000"><br /> </span><span style="color: #000000">            </span><span style="color: #0000ff">for</span><span style="color: #000000">(i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">; i</span><span style="color: #000000"><</span><span style="color: #000000"> child.length; i</span><span style="color: #000000">++</span><span style="color: #000000">){                <br />                 document.write(child[i].nodeName);<br />                 document.write(child[i].nodeType </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">  </span><span style="color: #000000">"</span><span style="color: #000000">);    <br />                 document.write(child[i].childNodes[</span><span style="color: #000000">0</span><span style="color: #000000">].nodeValue </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br/></span><span style="color: #000000">"</span><span style="color: #000000">);<br />                 </span><span style="color: #0000ff">var</span><span style="color: #000000"> ch </span><span style="color: #000000">=</span><span style="color: #000000"> child[i];<br />                 </span><span style="color: #0000ff">for</span><span style="color: #000000">(j</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">; j</span><span style="color: #000000"><</span><span style="color: #000000">ch.childNodes.length; j</span><span style="color: #000000">++</span><span style="color: #000000">){<br />                     document.write(ch.childNodes[j].nodeName);<br />                     document.write(ch.childNodes[j].nodeType </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">  </span><span style="color: #000000">"</span><span style="color: #000000">);                        <br />                     document.write(ch.childNodes[j].childNodes[</span><span style="color: #000000">0</span><span style="color: #000000">].nodeValue </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br/></span><span style="color: #000000">"</span><span style="color: #000000">);<br />                 }<br />             }            <br />         </span><span style="color: #000000"></</span><span style="color: #000000">script</span><span style="color: #000000">></span><span style="color: #000000"><br />     </span><span style="color: #000000"></</span><span style="color: #000000">head</span><span style="color: #000000">></span><span style="color: #000000"><br /> </span><span style="color: #000000"></</span><span style="color: #000000">html</span><span style="color: #000000">></span></div> <br /> 其中用到的XML DOM - Node 对象的属性有Q?br /> <span style="color: #33cccc; background-color: #ffffff">childNodes</span>:q回某节点到子节点的节点列表<br /> <span style="color: #33cccc; background-color: #ffffff">firstChild</span>:q回某节点的首个子节?br /> <span style="color: #33cccc">lastChild</span>:q回某个节点的最后一个子节点<br /> <span style="color: #33cccc">nextSibling</span>:q回某个节点之后紧跟的同U节?br /> <span style="color: #33cccc">nodeName</span>:q回节点的名UͼҎ其类?br /> <span style="color: #33cccc">nodeType</span>:q回节点的类?br /> <span style="color: #33cccc">nodeValue</span>:讄或返回某个节点的|Ҏ其类?br /> <span style="color: #33cccc">ownerDocument</span>:q回某个节点的根元素Qdocument 对象Q?br /> <span style="color: #33cccc">parentNode</span>:q回某节点的父节?br /> <span style="color: #33cccc">previousSibling</span>:q回某个节点之前紧跟的同U节?br /> <span style="color: #33cccc">textContent</span>:讄或返回某节点及其后代的文本内?br /> <span style="color: #33cccc">text</span>:q回某节点及其后代的文本QIE 独有的属性)<br /> <span style="color: #33cccc">xml</span>:q回某节点及其后代的 XMLQIE 独有的属性) <br /> <br /> <span style="color: red">未测试或者不太明白的XML DOM - Node 对象的属性有Q谁帮忙讲解下啊Q?/span><br /> <span style="color: #ff0000">baseURI</span>:q回某个节点的绝对基?br /> <span style="color: #ff0000">prefix</span>:讄或返回某节点的命名空间前~<br /> <span style="color: #ff0000">localName</span>:q回某个节点的本地名U?br /> <span style="color: #ff0000">namespaceURI</span>:q回某个节点的命名空?br /> <img src ="http://www.tkk7.com/Rookie/aggbug/174115.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Rookie/" target="_blank">zhhang920</a> 2008-01-09 21:05 <a href="http://www.tkk7.com/Rookie/archive/2008/01/09/174115.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML 学习(? DOM 解析 standalone 的问?/title><link>http://www.tkk7.com/Rookie/archive/2008/01/09/174093.html</link><dc:creator>zhhang920</dc:creator><author>zhhang920</author><pubDate>Wed, 09 Jan 2008 12:05:00 GMT</pubDate><guid>http://www.tkk7.com/Rookie/archive/2008/01/09/174093.html</guid><wfw:comment>http://www.tkk7.com/Rookie/comments/174093.html</wfw:comment><comments>http://www.tkk7.com/Rookie/archive/2008/01/09/174093.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Rookie/comments/commentRss/174093.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Rookie/services/trackbacks/174093.html</trackback:ping><description><![CDATA[<p>一个简单的 XML解析例子Q弄了半天终于可以运行了Q记下来Q还有点问题Q大家帮忙看看;<br /> <br /> <strong>文cd定义(myfile.dtd)</strong><br /> <!ELEMENT myfile (title, author)><br /> <!ELEMENT title (#PCDATA)><br /> <!ELEMENT author (#PCDATA)><br /> <br /> <strong>XML文g(myfile.xml)<br /> </strong><?xml version="1.0" encoding="GB2312"?><br /> <!DOCTYPE myfile SYSTEM "myfile.dtd"><br /> <myfile><br /> <title>XMLL学习手册</title><br /> <author>ajie</author><br /> </myfile><br /> <br /> <strong>试面(myfile.html)</strong><br /> <html><br /> <head><br /> <script language="JavaScript" for="window" event="onload"><br />  var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");<br />  xmlDoc.async="false";<br />  xmlDoc.load("myfile.xml");<br />  nodes = xmlDoc.documentElement.childNodes;<br />  title.innerText = nodes.item(0).text;<br />  author.innerText = nodes.item(1).text;<br /> </script></p> <p><title>在HTML中调用XML数据</title><br /> </head><br /> <body bgcolor="#FFFFFF"><br /> <b>标题: </b><br /> <span id="title"></span><br><br /> <b>作? </b><br /> <span id="author"></span><br><br /> </body><br /> </html><br /> <br /> <strong style="color: red">问题Q?br /> 1Q?/strong><br /> <?xml version="1.0" standalone="yes" encoding="GB2312"?><br /> <myfile><br /> <title>XMLL学习手册</title><br /> <author>ajie</author><br /> </myfile><br /> 把myfile.htmlҎq样Ӟ到这句nodes = xmlDoc.documentElement.childNodes时报错,提示“~少对象”;<br /> <span style="color: red"><strong>2Q?/strong></span>standalone="yes"换成standalone="no"一L错误<br /> <span style="color: red"><strong>3Q?/strong></span><br /> <?xml version="1.0"  encoding="GB2312"?><br /> <myfile><br /> <title>XMLL学习手册</title><br /> <author>ajie</author><br /> </myfile><br /> 把myfile.htmlҎq样时可以运行正常;<br /> <br /> 对这个standalone很是无奈Q谁帮忙讲解下;</p> <img src ="http://www.tkk7.com/Rookie/aggbug/174093.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Rookie/" target="_blank">zhhang920</a> 2008-01-09 20:05 <a href="http://www.tkk7.com/Rookie/archive/2008/01/09/174093.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML 学习(一) XML基础http://www.tkk7.com/Rookie/archive/2008/01/09/174085.htmlzhhang920zhhang920Wed, 09 Jan 2008 10:56:00 GMThttp://www.tkk7.com/Rookie/archive/2008/01/09/174085.htmlhttp://www.tkk7.com/Rookie/comments/174085.htmlhttp://www.tkk7.com/Rookie/archive/2008/01/09/174085.html#Feedback0http://www.tkk7.com/Rookie/comments/commentRss/174085.htmlhttp://www.tkk7.com/Rookie/services/trackbacks/174085.html        定义QXML是Extensible Markup Language的简写,一U扩展性标识语aQ?strong style="color: red">是数据储存和交互的工?/strong>Q?br />
一Q相x语:
    Element(元素)Q一个元素由一个标识来定义Q包括开始和l束标识以及其中的内容,pq样Q?lt;author>ajie</author> Q?br />     Tag(标识)Q标识是用来定义元素的。在XML中,标识必须成对出现Q将数据包围在中间。标识的名称和元素的名称是一LQ?br />     Attribute(属?Q属性是Ҏ识进一步的描述和说明,一个标识可以有多个属性,例如font的属性还有sizeQ?br />     Declaration(声明) Q在所有XML文的第一行都有一个XML声明。这个声明表C个文是一个XML文Q它遵@的是哪个XML版本的规范。一个XML的声明语句就象这P<?xml version="1.0"?> Q?br />     DTD(文gcd定义) QDTD是用来定义XML文档中元素,属性以及元素之间关pȝQ(XML文l构Q?br />     Well-formed XML(良好格式的XML)Q一个遵守XML语法规则Qƈ遵守XML规范的文档称之ؓ"良好格式"Q?br />     Valid XML(有效的XML)Q一个遵守XML语法规则Qƈ遵守相应DTD文g规范的XML文UCؓ有效XML文Q?br /> 二,XML文l成Q?br />     文声明Q?lt;?xml version="1.0" encoding="GB2312"?>
    文cd定义QDTDQ?br />     XML标示创徏内容
三,XML语法规则
1Q声明语?lt;?xml ... ?>的作用是告诉览器或其它处理E序q个文档是XML文。声明语句中的version表示文遵守的XML规范的版?encoding表示文所用的语言~码Q这个例子用的编码是”GB2312“Q?br /> 2Q注意大写的区分;
3Q?#8220;有始有终”所有的标识必须有相应的l束标识Q?br /> 4Q空标识(empty element)必须被关闭;
5Q给属性值加引号QHTML中的属性值可以加"",也可以不?",q可以加''。但在XML中,属性g定要?Q?br /> 6Q标识之间不可以交叉Q?br />
XML标记必须遵@下面的命名规?
1Q名字中可以包含字母、数字以及其它字母;
2Q名字不能以数字?_" (下划U? 开_
3Q名字不能以字母 xml (?XML ?Xml ..) 开_
4Q名字中不能包含I格?
5Q名UC间不能包?:"(冒号) 

    Z使元素更Ҏ阅读理解和操作,我们q有一些徏议: 名称中不要?."Q名U尽量简短,名称的大写量采用同一标准Q名U可以用非英文字符Q比如用中文。但是有些Y件可能不支持?IE5目前是支持中文元素的)
? DOM
    DOM全称是document object model(文对象模型)QDOM是用来干什么的呢?假设把你的文看成一个单独的对象QDOM是如何用HTML或者XML对这个对象进行操作和控制的标准?br />     面向对象的思想Ҏ已经非常行了,在编E语a(例如javaQjs)中,都运用面向对象的~程思想。在XML中,是要将|页也作Z个对象来操作和控Ӟ我们可以建立自己的对象和模板。与对象q行交流Q如何命令对象,p用到API。API全称Application Programming InterfaceQ它是访问和操作对象的规则。而DOM是一U详l描qHTML/XML文对象规则的API。它规定了HTML/XML文档对象的命名协定,E序模型Q沟通规则等。在XML文中,我们可以每一个标识元素看作一个对?--它有自己的名U和属性?nbsp;
    XML创徏了标识,而DOM的作用就是告诉script如何在浏览器H口中操作和昄q些标识;
   上面我们已经要的讲述了一些XML的基本原理,我们来看看它们之间的兌以及它们是如何工作的Q先看这里一张图Q?

1.XML描述数据cd。例?"King lear"是一个标题元素;
2.CSS储存q控制元素的昄样式。例如:标题被?8pt字体昄
3.script脚本控制元素如何动作。例如:当一个title元素"out of stock"Q将被用U色昄?
4.DOM则ؓ脚本和对象的交流提供一个公共^収ͼq将l果昄在浏览器H口?br /> 如果M一个部分发生错误,都不会得到正结果?

五,昄
    单独用XMl不能昄面Q我们用格式化技术,比如CSS或者XSLQ才能显CXML标记创徏的文;XML中用来设定显C风格样式的文gcd有:
1QXSL QXSL全称是Extensible Stylesheet Language(可扩展样式语a), 是将来设计XML文昄样式的主要文件类型。它本n也是ZXML语言的。用XSLQ你可以灉|的设|文档显C样式,文自动适应M览器和PDA(掌上电脑)。;XSL也可以将XML转化为HTMLQ那P老的览器也可以览XML文了?
2QCSSQCSS大家很熟悉了Q全U是Cascading Style Sheets(层叠样式?Q是目前用来在浏览器上显CXML文的主要方法?br /> 3.Behaviors QBehaviors现在q没有成为标准。它是微软的IE览器特有的功能Q用它可以对XML标识讑֮一些有动作?



zhhang920 2008-01-09 18:56 发表评论
]]>
关于提高自己JAVA水^的十大技术讨??http://www.tkk7.com/Rookie/archive/2008/01/08/173709.htmlzhhang920zhhang920Tue, 08 Jan 2008 09:45:00 GMThttp://www.tkk7.com/Rookie/archive/2008/01/08/173709.htmlhttp://www.tkk7.com/Rookie/comments/173709.htmlhttp://www.tkk7.com/Rookie/archive/2008/01/08/173709.html#Feedback0http://www.tkk7.com/Rookie/comments/commentRss/173709.htmlhttp://www.tkk7.com/Rookie/services/trackbacks/173709.html  一、XML

  在十U技术中Q最重要的一U技术我惛_该非XML莫属。这里不仅仅指XML规范本nQ还包括一pd有关的基于XML的语aQ主要有XHTMLQXSLTQXSLQDTDsQXML Schema(XSD)QXPathQXQuery和SOAP.如果你现在还对XML一无所知,那么赶快狂补吧。XML是包含类gHTML标签的一个文本文Ӟ在这个文件中定义了一个树型结构来描述它所保存的数据?/p>

  XML最大的优点是你既可以在q个文本文g中存储结构化数据Q也可以在其中存储非l构化数据——也是_它能包含和描q?_糙?文数据Q就象它描述"规则?表格数据一栗?/p>

  XHTML是目前编写HTML的首选方?因ؓXHTML本n是格式良好的XMLQ与通常畸Ş的HTML文档相比Q?XHTML格式文更容易处理?/p>

  XSLT和XSL是对XML文q行转换的语a。它们可以将XML文转换成各U格式,比如另一个文本文件、PDF文g、HTML文g、逗号分割的文Ӟ或者{换成其它的XML文?/p>

  DTDs 和XML Schema用来描述XML文g所包含的数据内容的cdQ你不用编写定制的代码p对XML文的内容进?有效?查,使内容强行遵守给出的规则?/p>

  XPath ?XQuery是查询语aQ用它们可以从XML文中吸取单个的数据Ҏ者数据项列表。XQuery的功能特别强大,因ؓ它对XPath查询q行了扩展。实际上QXQuery和XML的关pd像SQL之于关系数据库一栗?/p>

  SOAP是Web services间进行通讯的标准协议。你不必知道SOAP协议的所有细节,但是你应该熟悉其常用规则及其工作原理Q这样你才能使用它?/p>

  二、Web Services

  Web服务是XML行后的直接产物。因为XML可以描述数据和对象,XML大纲可以保证XML文数据的有效性,因ؓXML的基于文本的规范Q因而XML文极其适合于作ZU跨q_通讯标准的基本格式。如果你q没有接触过Web服务Q那么过不了多久你肯定会到它,所以必ȝl掌握Web服务Q最好是_N它Q因为它是迄今ؓ止应用程序间跨不同种cL器、语a、^台和位置通讯的最单的一U方式。不你需不需要它QWeb服务都会是将来互用性的主要势?/p>

  XML工作l的John Bosak曾说q:"XML使得Java有事可做"Q那么,我们也可以说QWeb服务使得所有语a都有事可做。Web服务让运行在大型Z的COBOL应用E序与运行在手持讑֤上的应用E序怺沟?让Java应用与。NET服务器相互通讯Q让桌面应用与Web服务器进行无~交互,不但为商业数据处理,同时也ؓ商业功能提供了方便的实现——ƈ且这U实C语言、^台、和位置无关?/p>

  三、面向对象编E?/strong>

  许多E序员仍然认为OOP乃技术的象牙之塔Q但是细l想一下过dq里在面向对象领域里占据q统d位的开发语a之后Q你׃会这么认ZQOOP理念从Smalltalk开始,然后蔓g到C++和Pascal(Delphi)Q到Java成ؓ真正的主,几年之后QVB.NET ?C#的出现可以说是OOP发展Cd造极的地步。虽然用这些语a不必了解OOP的概念,但如果你~Z一些OOP的基本知识和ҎQ我想你很难在逐渐疲Y的就业市Z扑ֈ工作?/p>

 四、JavaQ?C++Q?C#Q?VB.NET

  如果你热衷于技术,q且热爱~程Q那么我想你应该L玩{q些高语言Q我说的玩{q不一定要你成U编E高手。而是能看懂用q些语言~写的代码即可。如果你q有_֊用它们编码那更好了。其实这U机会甚。但是看代码的机会很多,学习~程的最有效的一U方式就是看源代码——浩如烟L源代码中很多都不是用你所钟爱的开发语a~写的?/p>

  在过ȝ几年里,各个语言功能的发展基本上都差不多。现在你完全可以用VB.NET来写Windows服务、Web应用或者命令行E序。即使你只用其中的一U语a写程序。我认ؓ也完全有必要学习另外一U语aQ自己能阅d理解它们现有的例子代码,q且能将一U语a~写的代码{换成你首选的~程语言代码。这里列出的四种语言可谓是一个强大的开发语a工具,如果你掌握了它们Q毫无疑问你一定是一个众ZԒ慕的高手。这里我要声明一下:那就是我q没有要忽略和排除其它的高语言Q如QFORTRAN、COBOL、APL、ADA、Perl和Lisp{等Q根据你所从事的领域不同,应该选择适合的语a和工兗?/p>

  五、JavaScript

  Java 和JavaScript两者的名字管很类|但它们之间ƈ没有什么关pRؓ什么一U脚本语a会如此重要,以至于将它列入十U关键技术之一?仔细想一下就知道了,目前所有主的览器都使用JavaScript.如果你要~写Web应用E序Q那么JavaScript不可或缺。此外,JavaScriptq能作ؓ一U服务器端的脚本语言Q如它嵌入在ASP、ASP.NET中,或者嵌入XSLT来扩展功能。目前JavaScript在Mozilla/Netscape中是Ȁzd于XUL界面的首选语aQ它zZActionScriptQ成为Flash MX应用的编E语a。还有就是JavaScript极有可能成ؓ未来新设备的脚本语言以及L应用的宏语言?/p>

  相比之下QVBScript虽然在微软的产品中得到很好的支持Q但从长q来看,没有q象表明它会有美好前途。微软自己都向于用JavaScript(或者用由JavaScriptz的JScript)来编写其客户端脚本代码。因此,如果你要选择脚本语言Q非JavaScript莫属?/p>

  六、Regular Expressions

  从所周知Q关pL据库的查询用SQLQ搜索XML文用XPath 和XQueryQ而正则表辑ּ则用来搜索纯文本。例如,你可以用一个命令来查找或删除HTML格式文g中的注释内容。大安用过"IndexOf"?InStr"以及"Like"q些内徏在JavaScript或VB中的文本搜烦函数Q这些函数虽然很Ҏ使用Q但是它们的功能却无法与正则表达式同日而语——现在每一U主的开发语a都提供对正则表达式的存取。尽有为正则表辑ּ本n的读写艰涩难懂,但毕竟它的功能强大,使用它的领域也越来越多?/p>

  七、Design Patterns

  像OOP通过创徏和分cd象来化编E一P设计模式普通的对象交互分类成指定的模型Q这是一个从一般到具体的过E。OOP的成分用得多Q设计模式就昑־有用武之地。所以你必须理解它们Q跟上其M理论的发展?/p>

  八、Flash MX

  当你需要比HTML和CSS所能提供的更多的客L囑Ş和编E能力时QFlash是最佳选择。在Flash中编E比用Java应用或者。NET代码来得快得多,也容易得多?/p>

  在最新版本中(MX)QFlash不仅可以d和进行动L包,它还是个高度的可~程应用环境。具备强大的与SOAP Web服务沟通的能力Q可以调用运行在q端服务器上的ColdFusion、Java或。NET代码。可以说Flash几乎无处不在Q包括手持设备、置盒、甚x新的qx电脑Q你到处都可以见到它的n影,所以用它实际上可以扩展和延你的应用E序使用领域?/p>

 九、Linux/Windows

  q是当今PCs机操作系l的两大阵容Q如果你惛_计算业里P׃定要熟悉它们。对于LinuxQ最好能自己安装Q配|,下蝲它的囑Ş用户界面以及一些应用程序。自己安装Apacheq会~写Web应用E序。要清醒地认识到q个世界除了Windows之外Q还有Linux的存在。ƈ且这U局面将会长期存在。反q来Q如果你是一个死忠的Linux开发者,不要再l对Windows的憎Ӟ要相互学习,取长补短Q看看Windows有什么好的东东可以采U뀂记住Windows仍然是桌面之王?/p>

  谁也说不准你们公总么时候会军_从Linux转向WindowsQ或者从Windows转向Linux.谁也说不准什么时候你会蟩槽跑到另外一个用不同^台的公司上班——或者即便不xQ也有可能在不同q_上开始另外一个杀手目——所以最好在每个q_上都U篏一些经验,而不要在一|上吊歅R?/p>

  十、SQL

  管SQL在当今众多的技术中已不是什么新东西Q而且在未来的十年里它的作用很有可能被削弱Q甚x个被淘汰Q但它仍然是一U基本技能——别看它是一U基本技能,至今仍有许多开发h员不懂什么是SQL或对它了解不多。不要指望基于图形用L面的SQL构造器会帮你的忙,q是自己亲手写SQL查询吧,定你掌握了SQL的基本语法。现在理解了SQLQ不仅对以后学习XQuery有所裨益Q而且可以使你很快扑ֈ化或改进当前开发项目的途径?/p>

  ֣Q培d技术的好奇?/strong>

  其实Q不技术的发展势如何Q每个h最重要的一个技能是好奇心。敢于面Ҏ战,在你目前或未来的工作中,新语a或新技术可能很重要Q也可能不怎么重要Q你所学习的东西ƈ不一定非要针对你的工作。不要怕失败,M新的技术对初学者来说都是困隄。大多数的失败都可以归咎于本w急功q利Q希望速成。俗话说——千里之行,始于下Q应该脚t实圎ͼ一步一个脚印地往前走。不要让旉来左右你行动Q而是要利用时间来x、研I、测试新的开发技术和工具?/p>

zhhang920 2008-01-08 17:45 发表评论
]]>
OpenGIS 介绍(?http://www.tkk7.com/Rookie/archive/2008/01/08/173615.htmlzhhang920zhhang920Tue, 08 Jan 2008 05:36:00 GMThttp://www.tkk7.com/Rookie/archive/2008/01/08/173615.htmlhttp://www.tkk7.com/Rookie/comments/173615.htmlhttp://www.tkk7.com/Rookie/archive/2008/01/08/173615.html#Feedback0http://www.tkk7.com/Rookie/comments/commentRss/173615.htmlhttp://www.tkk7.com/Rookie/services/trackbacks/173615.html最q在?Geoserver Q这文章不错,转过来;

此FOSS4G大会卛_召开之日Q最q我会在Blog上依ơ介l一些OpenGIS标准、架构及用于实现的Y件。一斚wl初涉此行的朋友一个快速入门的概览Q另一斚w也是Ҏ接触OpenGISq一q来的ȝ?br />


OpenGIS定义了一l基于数据的服务Q而数据的基础是要素(FeatureQ。所谓要素简单地说就是一个独立的对象Q在地图中可能表Cؓ一个多边Ş建筑物,在数据库中即一个独立的条目。要素具有两个必要的l成部分Q几何信息和属性信息。OpenGIS几何信息分为点、边~、面和几何集合四U:其中我们熟悉的线QLinestringQ属于边~的一个子c,而多边ŞQPolygonQ是面的一个子cR也是说OpenGIS定义的几何类型ƈ不仅仅是我们常见的点、线、多边Ş三种Q它提供了更复杂更详l的定义Q增Z未来的可扩展性。另外,几何cd的设计中采用了组合模式(CompositeQ,几何集合(GeometryCollectionQ也定义ZU几何类型,cM圎ͼ要素集合QFeatureCollectionQ也是一U要素。属性信息没有做太大的限Ӟ可以在实际应用中l合具体的实现进行设|?br />
相同的几何类型、属性类型的l合成ؓ要素cdQFeatureTypeQ,要素cd相同的要素可以被存放在一个数据源中。而一个数据源只能拥有一个要素类型。因此,可以用要素类型来描述一l属性相似的要素。在面向对象的模型中Q完全可以把要素cd理解Z个类Q而要素则是类的实例?br />
通过GIS中间件可以从数据源中取出数据Q供WMS服务器和WFS服务器用?br /> WMS服务器接收请求,Ҏh内容的不同,可以q回不同格式的最l数据。例如,WMS可以q回常用囄格式的地囄D供最l用户阅读(cMGoogle MapsQ,其中地图是根据一个样式文ӞSLDQ生成的Q它描述了地囄U划_细Q色彩等QWMS也可以返回GeoRSS和KML用来和其它地图服务互通?br /> WFS服务器也可以接收hQ但WFS返回GML格式的地理信息数据。GML是一U基于XML的数据格式,它可以完整的再现数据Q也是OpenGIS数据源的重要形式。也是_WFSq回的GML可以l箋作ؓ数据源。在WFSh中,OpenGIS定义了一个Filter标准Q用来实现对数据的筛选,使WFS更加灉|。另一斚wQWFSq支持通过WFS-t提交客户端对数据的修攏V通俗地说QWMS?#8220;只读”的,而WFS则是可以d的?br />
草草说完Q发现自q理解也十分有限,如有谬误Q还望读者不吝指正。另外还有WCS斚w不曾涉及Q要获得更进一步的了解Q请下蝲OpenGIS的标准进行阅诅R?



今天来说OpenGIS架构的Y件、类库实现情cOpenGIS是一个开放标准,不过它已l不仅仅在开源世界发挥作用,许多商业软g也支持了OpenGIS的标准。当Ӟq里所提到的Y件全部都是开源Y件?br />
几何基础cd
代表Q?JTSQJavaQ, GEOSQC++Q, ShapelyQPythonQ?br /> q类几何基础cd主要实现的是OpenGIS的Simple Feature Access标准Q简单地说他们就是对几何cdQGeometryQ进行了一定程度的装。以JTSZQ它按照OpenGIS对于Geometry的描q实CZJava的接口和l承关系Q制作好了可以用的cMPoint、LineStringq样的类。另外这些类库还普遍实现了OpenGIS的DE-9IMI间位置关系判断和一些常用的计算几何ҎQ如~冲QbufferQ)?br /> 此类软g是所有GIScd的基Q正如几何是GIS的基之一一栗?br />
数据源实?/strong>
代表QPostGISQPostgreSQLQ,MySQL Spatial
数据源的实现主要是开源数据库的空间扩展。数据库的空间扩展不仅仅在数据表中支持几何类型的存储Q而且更提供了SQLU别的集合关pd断,例如Q可以直接利用SQL查询在某个多边Ş内的炏V?br />
中间?/strong>
代表QGeoToolsQJavaQ?br /> 中间件在pȝ中扮演连接数据和服务的角艌ӀGeoTools承担了从各种数据源(如PostGISQGMLQShapefileQWFSQ读取数据ƈ数据标准化的工作。Feature接口定义在GeoTools中,不同数据源的数据d后被l一成包含一个Geometry成员Q定义在JTS中)的Feature接口的实现。这Pq一步的操作只需面向Feature卛_Q省M高层软g对于不同数据源的解读q程。另外,GeoToolsq是OpenGIS标准的全面实玎ͼ其中包括Filter、坐标{换、GML?br />
WMS/WFS服务?/strong>
代表Q?GeoServerQJavaQ,MapServerQPHPQ?br /> 地图服务器扮演向|络中的客户端提供地图服务的角色。这cd图服务器可以接收l一规范的WMS和WFShQrequestQ,q回多种格式的数据。这个过E有WMS/WFS规范的严D定,所以,对客L来说其地图服务器的实现究竟是什么ƈ不会造成太大影响。这L规范Qؓ公共的、联合的地图服务创造了可能?br />
客户?/strong>
代表QOpenLayers/MapBuilderQJavaScriptQ,uDigQJavaQ,QGISQC++Q?br /> 客户端分为浏览器和桌面客LE序两种。以OpenLayersZ表的B/Spȝ客户端现在已l非常强大,它可以封装WMShQ在览器上实现地图的切片蝲入功能。另外拖动、羃N功能也非常完善,可以实现跨浏览器操作。最q的OpenLayers版本q支持了矢量~辑功能Q可以通过WFS-t提交。而传l的桌面客户端程序功能则更加强大Q支持多U包括WMS和WFS在内的数据源Q另外编辑功能、操作性也要比览器中的强大?br />

Shapefile
ESRI的Shapefile格式是GIS矢量文g格式的事实标准,通常?shp, .shx, .prj, .dbf{文件组成。OpenGIS的实现Y件普遍支持Shapefile的读写。Shapefile在GeoServer中可以直接作为数据源Q但是这U方式ƈ不被推荐Q原因很单,Z文g的数据源可能造成性能不佳和数据丢失?br />
GML
GML是OpenGIS的标准规范之一Q它Zxml描述地理数据。于Shapefile相比Qxml更容易读写,易于在网l中以各UŞ式传播。同Ӟxmlq具有可L,人可以理解和辨识。GeoTools实现了GMLDataStoreQ因此在GeoServer中GML也可以直接作为数据源Q需要下载GML扩展Q。同ӞGML的数据源为数据源动态化提供了实现的思\和可能性?br />
PostGIS
PostGIS是加拿大Refractions公司支持的开源项目,它ؓ开源数据库PostgreSQL提供了空间支持。PostGIS安装后,PostgreSQL中出C个模版数据库Q新建空间数据库时只需以PostGIS为模版即可。PostGIS在SQLU别上实C基本的空间运功能。另外绝大多数开源GIS软gQ即使是不严格遵守OpenGIS标准的)都支持PostGIS数据表的直接载入Q读写等功能。毋庸置疑,PostGIS是OpenGIS数据源最佛_现?br />
MySQL Spatial
MySQL是开源数据库的大鳄,从MySQL4.0开始加入了Spatial扩展功能Q实COpenGIS规定的几何数据类型,在SQL中的单空间运。但是从4.0之后到现在,MySQL的Spatial部分一直没有l的更新和增强。加上早先MySQL在SQL上对I间q算支持的不完善Q只支持Z最外接矩形的关系判断Q,所以MySQL是开源数据源中一个不太让人满意的选择。不q由于MySQL在小型项目上的广泛引用,在一些情况下也是可以以MySQL为数据源的?br />
db4o?Q?对象数据库作为数据源的可能?/strong>
OpenGIS的系l架构完全是Z一个面向对象的模型的,而传l的关系数据库、Shapefile文g是现在应用的L。在地理描述的过E中Q关pL据库的特性ƈ没有被完全发挥,而ؓ此还需要有中间件做ORM的工作。试想直接将FeatureType和Features以对象Ş式存入对象数据库Q整个系l至在理论上可以减一层。不q,以对象数据库作ؓ数据源,q需要对象数据库的性能q一步提升。而之后的和已有Y件的Ҏ应该不成问题Q因为db4o可以直接存储Feature对象和Geometry对象?br /> 但是因此产生的数据对实现的依赖性又是一个问题:数据和实现紧密耦合Q数据中捆绑了代码,虽然db4oL支持Java?NET的的互操作,但是对于其它实现来说又成了问题。从q个角度来说Q对象数据库作ؓ数据源是一U倒退?br />
Z么没有KMLQ?/strong>
KML作ؓ一U新的标准(没有在意最后是否通过Q,它的作用主要是网l中地理信息的传输。KML是一U面向客L设计的数据Ş式,q是它不能取代GMLC的原因,同时也是它在GoogleEarth和很多地囑ֺ用上q强于GML的原因。对照一下KML和GML的Ş式就很容易理解,GML属性数据存储ؓElementQ而KML则是以超文本的Ş式存储属性数据,前者便于数据读取,后者便于客L表现。于KML很类似的是GeoRSSQ效果是怼的?/span>


zhhang920 2008-01-08 13:36 发表评论
]]>
字符集和~码 http://www.tkk7.com/Rookie/archive/2008/01/05/172991.htmlzhhang920zhhang920Sat, 05 Jan 2008 08:57:00 GMThttp://www.tkk7.com/Rookie/archive/2008/01/05/172991.htmlhttp://www.tkk7.com/Rookie/comments/172991.htmlhttp://www.tkk7.com/Rookie/archive/2008/01/05/172991.html#Feedback0http://www.tkk7.com/Rookie/comments/commentRss/172991.htmlhttp://www.tkk7.com/Rookie/services/trackbacks/172991.html
一 预备知识
1Q字W?/span>Q字W是抽象的最文本单位。它没有固定的ŞӞ可能是一个字形)Q而且没有倹{?#8220;A”是一个字W,“?#8221;Qd国、法国和许多其他Ƨ洲国家通用货币的标志)也是一个字W?#8220;?#8221;“?#8221;q是两个汉字字符。字W仅仅代表一个符P没有M实际值的意义?br /> 2Q字W集Q字W集是字W的集合。例如,汉字字符是中国h最先发明的字符Q在中文、日文、韩文和南文的书写中用。这也说明了字符和字W集之间的关p,字符l成字符集(iso8859-1QGB2312/GBKQunicodeQ?br /> 3Q代码点Q字W集中的每个字符都被分配C?#8220;代码?#8221;。每个代码点都有一个特定的唯一数|UCؓ标倹{该标量值通常用十六进制表C?br /> 4Q代码单元: 在每U编码Ş式中Q代码点被映到一个或多个代码单元?#8220;代码单元”是各个编码方式中的单个单元。代码单元的大小{效于特定编码方式的位数Q?nbsp;
           UTF-8 QUTF-8 中的代码单元?8 位组成;?UTF-8 中,因ؓ代码单元较小的缘故,每个代码点常常被映射到多个代码单元。代码点被映射C个、两个、三个或四个代码单元Q?br />           UTF-16 QUTF-16 中的代码单元?16 位组成;UTF-16 的代码单元大是 8 位代码单元的两倍。所以,标量值小?U+10000 的代码点被编码到单个代码单元中;
          UTF-32QUTF-32  中的代码单元?32 位组成; UTF-32 中用的 32 位代码单元够大Q每个代码点都可~码为单个代码单元;
          GB18030QGB18030  中的代码单元?8 位组成;?GB18030 中,因ؓ代码单元较小的缘故,每个代码点常常被映射到多个代码单元。代码点被映射C个、两个或四个代码单元?br /> 5QD例:

       “中国北京香蕉是个大笨?#8221;q是我定义的aka字符集;各字W对应代码点为:        
                ?00000001
                ?00000010
                ?10000001
                ?10000010
                ?10000100
                ?10001000
                ?10010000
                W?10100000
                ?11000000
                ?00000100
                ?00001000 
        下面是我定义?zixia ~码ҎQ?位)Q可以看到它的编码中表示了aka字符集的所有字W对应的 代码单元Q?br />                ?10000001
                ?10000010
                ?00000001
                ?00000010
                ?00000100
                ?00001000
                ?00010000
                W?00100000
                ?01000000
                ?10000100
                ?10001000
       所谓文本文?是我们按一定编码方式将二进制数据表CZؓ对应的文本如00000001000000100000010000001000000100000010000001000000q样的文件。我用一个支持zixia~码和aka字符集的C本打开Q它按照编码方案显CZؓ  "香蕉是个大笨?"
       如果我把q些字符按照GBK另存一个文Ӟ那么则肯定不是这个,而是
1100111111100011 1011110110110110 1100101011000111 1011100011110110 1011010011110011 1011000110111111 1011010110110000 110100001010

二,字符?br />  1Q?常用字符集分c?
ASCII及其扩展字符?br />         作用Q表语英语及西欧语言?br />         位数QASCII是用7位表C的Q能表示128个字W;其扩展?位表C,表示256个字W?br />          范围QASCII?0?FQ扩展从00到FF?br />  ISO-8859-1字符?br />         作用Q扩展ASCIIQ表CƧ、希腊语{?br />         位数Q?位,
        范围Q从00到FFQ兼容ASCII字符集?br /> GB2312字符?br />         作用Q国家简体中文字W集Q兼容ASCII?br />         位数Q?个字节表C,能表C?445个符P包括6763个汉字,几乎覆盖所有高频率汉字?br />         范围Q高字节从A1到F7, 低字节从A1到FE。将高字节和低字节分别加?XA0卛_得到~码?br /> BIG5字符?br />         作用Q统一J体字编码?br />         位数Q?个字节表C,表示13053个汉字?br />         范围Q高字节从A1到F9Q低字节?0?EQA1到FE?br /> GBK字符?br />         作用Q它是GB2312的扩展,加入对繁体字的支持,兼容GB2312?br />         位数Q?个字节表C,可表C?1886个字W?br />         范围Q高字节?1到FEQ低字节?0到FE?br /> GB18030字符?br />         作用Q它解决了中文、日文、朝鲜语{的~码Q兼容GBK?br />         位数Q它采用变字节表C?1 ASCIIQ?Q?字节)。可表示27484个文字?br />         范围Q?字节?0?F; 2字节高字节从81到FEQ低字节?0?E?0到FEQ?字节W一三字节从81到FEQ第二四字节?0?9?br />  UCS字符?br />         作用Q国际标?ISO 10646 定义了通用字符?(Universal Character Set)。它是与UNICODE同类的组l,UCS-2和UNICODE兼容?br />         位数Q它有UCS-2和UCS-4两种格式Q分别是2字节?字节?br />         范围Q目前,UCS-4只是在UCS-2前面加了0x0000?br /> UNICODE字符?br />         作用Qؓ世界650U语aq行l一~码Q兼容ISO-8859-1?br />         位数QUNICODE字符集有多个~码方式Q分别是UTF-8QUTF-16和UTF-32?br />  2 Q按所表示的文字分c?br />        语言                                 字符?nbsp;                                    正式名称 
    p、西Ƨ语                     ASCIIQISO-8859-1                MBCS 多字?nbsp;
    体中?nbsp;                            GB2312                                    MBCS 多字?nbsp;
    J体中文                             BIG5                                         MBCS 多字?nbsp;
    J中?nbsp;                            GBK                                         MBCS 多字?nbsp;
    中文、日文及朝鲜?nbsp;        GB18030                                  MBCS 多字?nbsp;
    各国语言                             UNICODEQUCS                    DBCS 宽字?

三,~码
UTF-8Q采用变长字?(1 ASCII, 2 希腊字母, 3 汉字, 4 q面W号) 表示Q网l传? 即错了一个字节,不媄响其他字节,而双字节只要一个错了,其他也错了,具体如下Q?br />         如果只有一个字节则其最高二q制位ؓ0Q如果是多字节,其第一个字节从最高位开始,q箋的二q制位gؓ1的个数决定了其编码的字节敎ͼ其余各字节均?0开头。UTF-8最多可用到6个字节?/p>

 UTF-16Q采?字节QUnicode中不同部分的字符都同样基于现有的标准。这是ؓ了便于{换。从 0x0000?x007F是ASCII字符Q从0x0080?x00FF是ISO-8859-1对ASCII的扩展。希腊字母表使用?x0370?x03FF 的代码,斯拉夫语使用?x0400?x04FF的代码,国使用?x0530?x058F的代码,希伯来语使用?x0590?x05FF的代 码。中国、日本和韩国的象形文字(ȝ为CJKQ占用了?x3000?x9FFF的代码;׃0x00在c语言及操作系l文件名{中有特D意义,故很多情况下需要UTF-8~码保存文本Q去掉这?x00。D例如下:
UTF-16: 0x0080  = 0000 0000 1000 0000
UTF-8:   0xC280 = 1100 0010 1000 0000
UTF-32Q采?字节?br /> 优缺?br />    UTF-8、UTF-16和UTF-32都可以表C有效编码空?(U+000000-U+10FFFF) 内的所有Unicode字符?br />     使用UTF-8~码时ASCII字符只占1个字节,存储效率比较高,适用于拉丁字W较多的场合以节省空间?br />     对于大多数非拉丁字符Q如中文和日文)来说QUTF-16所需存储I间最,每个字符只占2个字节?br />     Windows NT内核是UnicodeQUTF-16Q,采用UTF-16~码在调用系lAPI时无需转换Q处理速度也比较快?br />     采用UTF-16和UTF-32会有Big Endian和Little Endian之分Q而UTF-8则没有字节顺序问题,所以UTF-8适合传输和通信?br />     UTF-32采用4字节~码Q一斚w处理速度比较快,但另一斚w也浪费了大量I间Q媄响传输速度Q因而很用?br />
四,如何判断字符?br /> 1Q字节序
首先说一下字节序对编码的影响Q字节序分ؓBig Endian字节序和Little Endian字节序。不同的处理器可能不一栗所以,传输旉要告诉处理器当时的编码字节序。对于前者而言Q高位字节存在低地址Q低字节存于高地址Q后者相反。例如,0X03AB,
Big Endian字节?br /> 0000: 0 3
0001: AB
Little Endian字节序是
0000: AB
0001: 0 3
2Q编码识?br /> UNICODEQ根据前几个字节可以判断UNICODE字符集的各种~码Q叫做Byte Order MaskҎBOMQ?br /> UTF-8: EFBBBF (W合UTF-8格式Q请看上面。但没有含义在UCS即UNICODE?
UTF-16 Big EndianQFEFF (没有含义在UCS-2?
UTF-16 Little EndianQFFFE (没有含义在UCS-2?
UTF-32 Big EndianQ?000FEFF (没有含义在UCS-4?
UTF-32 Little EndianQFFFE0000 (没有含义在UCS-4?

GB2312Q高字节和低字节的第1位都??br />
BIG5QGBK&GB18030Q高字节的第1位ؓ1。操作系l有默认的编码,ؓGBKQ可以下载别的ƈ升。通过判断高字节的W?位从而知道是ASCII或者汉字编码?/p>

zhhang920 2008-01-05 16:57 发表评论
]]>
վ֩ģ壺 ѹۿ| Ļ߲Ƶ| һŷ| ҹ˽ӰԺ| ҰȫƵ| ˺ݺۺϾþ| +ɫ++| Ů͵޾Ʒ| ɫһ| Ʒþ8xѹۿ| ɫ͵͵޹| ŮþþŮ| ƷŮٸAVѹۿ| ۲ӰԺѹۿ| þAVӰ| ŮڵƵվ | 91Ƶ߹ۿ| ŮڵƵվ| gvgvͬ| ɫavѹۿ| ɫվapp߹ۿ| ޿һ| ޾ƷƬ߹ۿƷĻ| AƬƵWWW| Ůһһ鴤Ƶ| ˳޵һվ߲| ޾Ʒר߲| Ƭ߷ѹۿ| һëƬ޶| С˵| ˳վ18ֹþӰԺ| þþþAVۺϲҰ | պߵһҳ| һѹۿƵİ| Ƶ97Ӱ| Ļ| һƵ| AVվþþƷ| ղƷϵ| ƵƷ| ѹۿɫƵվ(ɫ) |