~~~XML轻松学习xml手册下载~~~

XML轻松学习手册_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
128页免费33页免费8页免费21页免费4页免费 14页免费31页免费14页免费7页免费9页免费
喜欢此文档的还喜欢4页免费6页免费27页1下载券67页免费275页免费
XML轻松学习手册|X​M​L​轻​松​学​习​手​册
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
2014下半年教师资格证统考大备战
你可能喜欢文档贡献者
所有文档均来自于网络,所搜集文档几乎涵盖了所有行业,均严格按照道客巴巴->文档分类->所有文档->分类。对每篇文档详细释义做出了合理推敲,并对其精确划分了类别。例:工程垫资合同 ->(标题)->所有文档->(法律文献)->(分类)->合同范本。旨在让大家把搜索到的文档对照标题,参照分类。一看便一目了然成竹在胸,放心下载,安心使用。笔者主要搜集了一些常用文档,如论文,工作总结,合同协议,规章制度,报告,方案,课件,试题,试卷,答案,职业资格考试,策划营销.....等等一些教育学习,办公写作,商业经营,实用性极强的文档,您若觉得对您日常学习,商业经营,社交沟通,办公写作有所帮助的话就关注我吧。
下载此文档
正在努力加载中...
XML轻松学习手册
文档星级:
内容提示:XML轻松学习手册
文档格式:DOC|
浏览次数:1|
上传日期: 05:35:41|
下载积分:
该用户还上传了这些文档
官方公共微信
下载文档:XML轻松学习手册.DOCXML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解 - 下载频道
- CSDN.NET
&&&&XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解
XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解
XML越来越热,关于XML的基础教程网络上也随处可见。可是一大堆的概念和术语往往让人望而生畏,很多朋友问我:XML到底有什么用,我们是否需要学习它?我想就我个人学习过程的心得和经验,写一篇比较全面的介绍文章。首先有两点是需要肯定的:
  第一:XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解,等待只会让你失去机会;
  第二:新知识肯定会有很多新概念,尝试理解和接受,您才可能提高。不要害怕和逃避,毕竟我们还年轻。
  本文共分五大部分。分别是XML快速入门,XML的概念,XML的术语,XML的实现,XML的实例分析。最后附录介绍了XML的相关资源。作者站在普通网页设计人员的角度,用平实生动的语言,向您讲述XML的方方面面,帮助你拨开XML的神秘面纱,快速步入XML的新领域。
o 第一章:XML快速入门
o 一. 什么是XML?
o 二. XML是新概念吗?
o 三. 使用XML有什么好处?
o 四. XML很难学吗?
o 五. XML和HTML的区别
o 六. XML的严格格式
o 七. 关于XML的更多
o 第二章:XML概念
o 一. 扩展性
o 二. 标识
o 三. 语言
o 四. 结构化
o 五. Meta数据
o 六. 显示
o 第三章:XML的术语
o 一.XML文档的有关术语
o 二.DTD的有关术语
o 第四章:XML的语法
o 一.XML语法规则
o 二.元素的语法
o 三.注释的语法
o 四.CDATA的语法
o 五.Namespaces的语法
o 六.entity的语法
o 七.DTD的语法
o 第五章:XML实例解释
o 一.定义新标识
o 二.建立XML文档
o 三.建立相应的HTML文件
o 第六章:XML相关资源
五. XML和HTML的区别
XML和HTML都来自于SGML,它们都含有标记,有着相似的语法,HTML和XML的最大区别在于:HTML是一个定型的标记语言,它用固有的标记来描述,显示网页内容。比如& H1&表示首行标题,有固定的尺寸。相对的,XML则没有固定的标记,XML不能描述网页具体的外观,内容,它只是描述内容的数据形式和结构。
这是一个质的区别:网页将数据和显示混在一起,而XML则将数据和显示分开来。
我们看上面的例子,在myfile.htm中,我们只关心页面的显示方式,我们可以设计不同的界面,用不同的方式来排版页面,但数据是储存在myfile.xml中,不需要任何改变。
(如果你是程序员,你会惊讶的发现,这与模块化面向对象编程的思想极其相似!其实网页何尝不是一种程序呢?)
正是这种区别使得XML在网络应用和信息共享上方便,高效,可扩展。所以我们相信,XML做为一种先进的数据处理方法,将使网络跨越到一个新的境界。
六. XML的严格格式
吸取HTML松散格式带来的经验教训,XML一开始就坚持实行&良好的格式&。
我们先看HTML的一些语句,这些语句在HTML中随处可见:
2.& b&& i&sample& /b&& /i&
3.& td&sample& /TD&
4.& font color=red&samplar& /font&
在XML文档中,上述几种语句的语法都是错误的。因为:
1.所有的标记都必须要有一个相应的结束标记;
2.所有的XML标记都必须合理嵌套;
3.所有XML标记都区分大小写;
4.所有标记的属性必须用&&括起来;
所以上列语句在XML中正确的写法是
2.& b&& i&sample& /i&& /b&
3.& td&sample& /td&
4.& font color=&red&&samplar& /font&
  另外,XML标记必须遵循下面的命名规则:
1.名字中可以包含字母、数字以及其它字母;
2.名字不能以数字或&_& (下划线) 开头;
3.名字不能以字母 xml (或 XML 或 Xml ..) 开头;
4.名字中不能包含空格。
在XML文档中任何的差错,都会得到同一个结果:网页不能被显示。各浏览器开发商已经达成协议,对XML实行严格而挑剔的解析,任何细小的错误都会被报告。你可以将上面的myfile.xml修改一下,比如将& email&改为& Email&,然后用IE5直接打开myfile.xml,会得到一个出错信息页面:
&?xml version=&1.0& encoding=&GB2312&?&
&title&XML轻松学习手册&/title&
&author&ajie&/author&
&Email&&/email&
&date&&/date&
七. 关于XML的更多
好了,到现在你已经知道:
1.什么是XML;
2.XML,HTML,SGML之间的关系和区别;
3.XML的简单应用。
恭喜你!你已经不再对XML一无所知,并且已经走在了网络技术的前沿。整个学习过程好象并不很难哦:)
五.Meta数据(Metadata)---专业的XML使用者会使用meta数据来工作。
在HTML中我们知道可以使用meta标识来定义网页的关键字,简介等,这些标识不会显示在网页中,但可以被搜索引擎搜索到,并影响搜索结果的排列顺序。
XML对这一原理进行了深化和扩展,用XML,你可以描述你的信息在哪里,你可以通过meta来验证信息,执行搜索,强制显示,或者处理其他的数据。
下面是一些XML metadata在实际应用中的用途:
1.可以验证数字签名,使在线商务的提交动作(submission)有效。
2.可以被方便的建立索引和进行更有效搜索。
3.可以在不同语言之间传输数据。
W3C组织正在研究一种名为RDF(Resource Description Framework)的metadata处理方法,可以自动交换信息,W3C宣称,使用RDF配合数字签名,将使网络中存在&真实可信&的电子商务。
单独用XMl不能显示页面,我们使用格式化技术,比如CSS或者XSL,才能显示XML标记创建的文档。
我们在前面第一章讲到XML是将数据和格式分离的。XML文档本身不知道如何来显示,必须有辅助文件来帮助实现。(XML取消了所有标识,包括font,color,p等风格样式定义标识,因此XML全部是采用类似DHTML中CSS的方法来定义文档风格样式。),XML中用来设定显示风格样式的文件类型有:
XSL全称是Extensible Stylesheet Language(可扩展样式语言), 是将来设计XML文档显示样式的主要文件类型。它本身也是基于XML语言的。使用XSL,你可以灵活的设置文档显示样式,文档将自动适应任何浏览器和PDA(掌上电脑)。
XSL也可以将XML转化为HTML,那样,老的浏览器也可以浏览XML文档了。
CSS大家很熟悉了,全称是Cascading Style Sheets(层叠样式表),是目前用来在浏览器上显示XML文档的主要方法。
3.Behaviors
Behaviors现在还没有成为标准。它是微软的IE浏览器特有的功能,用它可以对XML标识设定一些有趣动作。
DOM全称是document object model(文档对象模型),DOM是用来干什么的呢?假设把你的文档看成一个单独的对象,DOM就是如何用HTML或者XML对这个对象进行操作和控制的标准。
面向对象的思想方法已经非常流行了,在编程语言(例如java,js)中,都运用面向对象的编程思想。在XML中,就是要将网页也作为一个对象来操作和控制,我们可以建立自己的对象和模板。与对象进行交流,如何命令对象,就要用到API。API全称Application Programming Interface,它是访问和操作对象的规则。而DOM就是一种详细描述HTML/XML文档对象规则的API。它规定了HTML/XML文档对象的命名协定,程序模型,沟通规则等。在XML文档中,我们可以将每一个标识元素看作一个对象---它有自己的名称和属性。
XML创建了标识,而DOM的作用就是告诉script如何在浏览器窗口中操作和显示这些标识
上面我们已经简要的讲述了一些XML的基本原理,我们来看看它们之间的关联以及它们是如何工作的,先看这里一张图:
1.XML描述数据类型。例如:&King lear&是一个标题元素;
2.CSS储存并控制元素的显示样式。例如:标题将被以18pt字体显示
3.script脚本控制元素如何动作。例如:当一个title元素&out of stock&,将被用红色显示。
4.DOM则为脚本和对象的交流提供一个公共平台,并将结果显示在浏览器窗口。
如果任何一个部分发生错误,都不会得到正确结果。
好了,看到这里,我们已经对XML是如何工作的有一个整体的大致的概念。通过这一章的学习,我们可能感觉到XML似乎更偏向数据处理,更方便程序员学习。实际情况也是这样的,XML设计的目的就是用来方便的共享和交互数据的。下一章,我们将系统的了解关于XML的各种术语。
二.DTD的有关术语
什么是DTD,我们上面已经简略提到。DTD是一种保证XML文档格式正确的有效方法,可以比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。
DTD文件也是一个ASCII的文本文件,后缀名为.dtd。例如:myfile.dtd。
为什么要用DTD文件呢?我的理解是它满足了网络共享和数据交互,使用DTD最大的好处在于DTD文件的共享。(就是上文DTD说明语句中的PUBLIC属性)。比如,两个相同行业不同地区的人使用同一个DTD文件来作为文档创建规范,那么他们的数据就很容易交换和共享。网上有其他人想补充数据,也只需要根据公用的DTD规范来建立文档,就立刻可以加入。
目前,已经有数量众多的写好的DTD文件可以利用。针对不同的行业和应用,这些DTD文件已经建立了通用的元素和标签规则。你不需要自己重新创建,只要在他们的基础上加入你需要的新标识。
当然,如果愿意,你可以创建自己的DTD,它可能和你的文档配合的更加完美。建立自己的DTD也是很简单的一件事,一般只需要定义4-5个元素就可以了。
调用DTD文件的方法有两种:
1.直接包含在XML文档内的DTD
你只要在DOCTYPE声明中插入一些特别的说明就可以了,象这样:
我们有一个XML文档:
&?xml version=&1.0& encoding=&GB2312&?&
&title&XML轻松学习手册&/title&
&author&ajie&/author&
我们在第一行后面插入下面代码就可以:
&!DOCTYPE myfile [
&!ELEMENT title (#PCDATA)&
&!ELEMENT author (#PCDATA)&
&!ENTITY copyright &Copyright 2001, Ajie.&&
2.调用独立的DTD文件
将DTD文档存为.dtd的文件,然后在DOCTYPE声明行中调用,例如,将下面的代码存为myfile.dtd
&!ELEMENT myfile (title, author)&
&!ELEMENT title (#PCDATA)&
&!ELEMENT author (#PCDATA)&
然后在XML文档中调用,在第一行后插入:
&!DOCTYPE myfile SYSTEM &myfile.dtd&&
我们可以看到DTD文档和HTML中js的调用是差不多的,关于DTD文档具体如何写,我们将在下一章和XML文档的语法一起介绍。
下面我们来了解DTD有关的术语:
1.Schema(规划)
schema是数据规则的描述。schema做两件事:
a.它定义元素数据类型和元素之间的关系;
b.它定义元素所能包含的内容类型。
DTD就是关于XML文档的一个schema。
2.Document Tree(文档树)
&文档树&在前面第二章我们已经提到过,它是文档元素分级结构的形象表示。一个文档结构树包含根元素,根元素是最顶级的元素,(就是紧接着XML声明语句后的第一个元素)。看例子:
&?xml version=&1.0&?&
&filelist&
&title&...&/title&
&author&...&/author&
&/filelist&
上面的例子分三级结构排列成&树&状,其中的&filelist&就是根元素。在XML和DTD文件中,第一个定义的都是根元素。
3.Parent Element(父元素)/Child Element(子元素)
父元素是指包含有其它元素的元素,被包含的元素称为它的子元素。看上面的&结构树&,其中&myfile&是父元素,&title&,&author&是它的子元素,而&myfile&又是&filelist&的子元素。象&title&这样没有包含任何子元素的最后一级元素我们也称之为&页元素&。
4.Parser(解析软件)
Parser是一种检查XML文档是否遵循DTD规范的工具软件。
XML的parser发展为两类:一种是&非确认类paeser&,只检测文档是否遵守XML语法规则,是否用元素标识建立了文档树。另一种是&确认类paeser&,它不但检测文档语法,结构树,而且比较解析你使用的元素标识是否遵守了相应DTD文件的规范。
Parser能独立使用,也可以成为编辑软件或浏览器的一部分。在后面的相关资源列表里,我列出了当前比较流行的一些parsers。
  好了,通过第三章的学习,我们已经了解了一些XML和DTD的基本术语,但是我们还不知道怎样来写这些文件,需要遵循什么样的语法,在下一章,将重点介绍有关撰写XML和DTD文档的语法。
第四章 XML语法
七.DTD的语法
DTD是&有效XML文档&的必须文件,我们通过DTD文件来定义文档中元素和标识的规则及相互关系。如何建立一个DTD文件呢?让我们一起来学习:
1.设置元素
元素是XML文档的基本组成部分。你要在DTD中定义一个元素,然后在XML文档中使用。元素的定义语法为:&!ELEMENT DESCRIPTION (#PCDATA, DEFINITION)*&
&&!ELEMENT& 是元素的声明,说明你要定义的是一个元素;
声明后面的&DESCRIPTION&,是元素的名称;
&(#PCDATA, DEFINITION)*&&则是该元素的使用规则。规则定义了元素可以包含的内容以及相互的关系。下面的表格概要列出了元素的规则:
2.元素规则表:
Symbol 含义 举例
#PCDATA 包含字符或文本数据 &MYFILE(#PCDATA)&
元素MYFILE包含一个文本数据
#PCDATA, element-name
包含文本和其它子元素 &MYFILE(#PCDTATA,TITLE)&
MYFILE元素必须包含文本和TITLE子元素
, 使用逗号分隔排序 &MYFILE (TITLE,AUTHOR,EMAIL)&
MYFILE元素必须依次包含TITILE,AUTHOR,EMAIL三个子元素
| 使用&|&表示或者 &MYFILE (TITLE | AUTHOR | EMAIL)&
MYFILE元素必须包含TITLE,或者AUTHOR或者EMAIL子元素。
name 只能使用一次 &MYFILE (TITLE)&
MYFILE元素必须包含TITLE子元素,而且只能使用一次。
name? 使用一次或者不使用 &MYFILE (TITLE,AUTHOR?,EMAIL?)&
MYFILE元素必须包含TITLE子元素,而且只能使用一次;可以包含或者不包含AUTHOR和EMAIL子元素,但是如果使用,只能一次。
name+ 使用至少一次或多次 &MYFILE (TITLE+,AUTHOR?,EMAIL)&
MYFILE元素必须包含TITLE子元素,而且使用至少一次;接下来可以跟随AUTHOR子元素,也可以不跟;最后必须包含EMAIL子元素,而且只能使用一次。
name* 使用一次,多次,或者根本不使用 &MYFILE (TITLE*)&
MYFILE元素可以包含一个,多个或者不包含TITLE子元素
( ) 设置组,可以嵌套 &MYFILE(#PCDATA | TITLE)*&
元素MYFILE包含一个或者更多的文本或者TITLE子元素。
&MYFILE((TITLE*, AUTHOR?, EMAIL)* | COMMENT)&
MYFILE元素必须包含一些内容,内容或者是一个注释;也或者是多个组,组里包含:一个,多个或者没有TITLE子元素,接着是一个或者没有AUTHOR子元素,再接着是一个必须的EMAIL子元素。
另外,我们还可以为元素定义属性,因为我们不推荐使用属性,在这里就不详细展开了。
 最后,我们来总结一些前四章学习的内容,写一个包含DTD,XML,以及Script的简单实例,便于读者理解:
1.将下面文件存为myfile.dtd
&!ELEMENT myfile (title, author)&
&!ELEMENT title (#PCDATA)&
&!ELEMENT author (#PCDATA)&
2.然后建立XML文档myfile.xml:
&?xml version=&1.0& encoding=&GB2312&?&
&!DOCTYPE myfile SYSTEM &myfile.dtd&&
&title&XML轻松学习手册&/title&
&author&ajie&/author&
3.建立HTML文档myfile.html
&script language=&JavaScript& for=&window& event=&onload&&
var xmlDoc = new ActiveXObject(&Microsoft.XMLDOM&);
xmlDoc.async=&false&;
xmlDoc.load(&myfile.xml&);
nodes = xmlDoc.documentElement.childN
title.innerText = nodes.item(0).
author.innerText = nodes.item(1).
&title&在HTML中调用XML数据&/title&
&body bgcolor=&#FFFFFF&&
&b&标题: &/b&
&span id=&title&&&/span&&br&
&b&作者: &/b&
&span id=&author&&&/span&&br&
4.用IE5.0以上浏览器打开myfile.html就可以看到效果了。
第三步:建立相应的HTML文件。
1.导入XML数据。
我们知道,目前流行的浏览器中,暂时只有微软的IE5.0以上版本浏览器支持XML。IE是通过在HTML中的object物件来支持插入XML,并通过js的XMLDocument.load()方法来导入数据。我们看代码: &object WIDTH=&0& HEIGHT=&0&
CLASSID=&clsid:550dda30--9ca9-d39& ID=&xmldso&&
定义一个object,ID名为xmldso。然后在head区用js引入xml数据:
&script for=&window& event=&onload&&
xmldso.XMLDocument.load(&cd.xml&);
2.捆绑数据。
然后将用&SPAN&标识来将XML数据绑定在表格中。其中ID,DATASRC,DTATFLD都是&SPAN&的属性。代码如下:
&tr&&td&Title:&/td&&td&&SPAN ID=&title& DATASRC=#xmldso DATAFLD=&TITLE&&&/SPAN&&/td&&/tr&
&tr&&td&Artist:&/td&&td&&SPAN ID=&artist& DATASRC=#xmldso DATAFLD=&ARTIST&&&/SPAN&&/td&&/tr&
&tr&&td&Year:&/td&&td&&SPAN ID=&year& DATASRC=#xmldso DATAFLD=&YEAR&&&/SPAN&&/td&&/tr&
&tr&&td&Country:&/td&&td&&SPAN ID=&country& DATASRC=#xmldso DATAFLD=&COUNTRY&&&/SPAN&&/td&&/tr&
&tr&&td&Company:&/td&&td&&SPAN ID=&company& DATASRC=#xmldso DATAFLD=&COMPANY&&&/SPAN&&/td&&/tr&
&tr&&td&Price:&/td&&td&&SPAN ID=&price& DATASRC=#xmldso DATAFLD=&PRICE&&&/SPAN&&/td&&/tr&
3.动作操作。
最后,为数据提供浏览按钮:
&INPUT TYPE=button VALUE=&上一张CD& ONCLICK=&moveprevious()&&
&INPUT TYPE=button VALUE=&下一张CD& ONCLICK=&movenext()&&
并利用js来完成两个鼠标点击功能:movenext()和moveprevious()。在head区加入如下代码:
&script language=&JavaScript&&
function movenext()
if (xmldso.recordset.absoluteposition & xmldso.recordset.recordcount)
xmldso.recordset.movenext();
function moveprevious()
if (xmldso.recordset.absoluteposition & 1)
xmldso.recordset.moveprevious();
好,我们先看HTML文件的全部原代码:
&script for=&window& event=&onload&&
xmldso.XMLDocument.load(&cd.xml&);
&script language=&JavaScript&&
function movenext()
if (xmldso.recordset.absoluteposition & xmldso.recordset.recordcount)
xmldso.recordset.movenext();
function moveprevious()
if (xmldso.recordset.absoluteposition & 1)
xmldso.recordset.moveprevious();
&TITLE&CD Navigate&/TITLE&
&object WIDTH=&0& HEIGHT=&0&
CLASSID=&clsid:550dda30--9ca9-d39& ID=&xmldso&&
&tr&&td&Title:&/td&&td&&SPAN ID=&title& DATASRC=#xmldso DATAFLD=&TITLE&&&/SPAN&&/td&&/tr&
&tr&&td&Artist:&/td&&td&&SPAN ID=&artist& DATASRC=#xmldso DATAFLD=&ARTIST&&&/SPAN&&/td&&/tr&
&tr&&td&Year:&/td&&td&&SPAN ID=&year& DATASRC=#xmldso DATAFLD=&YEAR&&&/SPAN&&/td&&/tr&
&tr&&td&Country:&/td&&td&&SPAN ID=&country& DATASRC=#xmldso DATAFLD=&COUNTRY&&&/SPAN&&/td&&/tr&
&tr&&td&Company:&/td&&td&&SPAN ID=&company& DATASRC=#xmldso DATAFLD=&COMPANY&&&/SPAN&&/td&&/tr&
&tr&&td&Price:&/td&&td&&SPAN ID=&price& DATASRC=#xmldso DATAFLD=&PRICE&&&/SPAN&&/td&&/tr&
&INPUT TYPE=button VALUE=&上一张CD& ONCLICK=&moveprevious()&&
&INPUT TYPE=button VALUE=&下一张CD& ONCLICK=&movenext()&&
将以上代码存为cd.htm文件,于第二步的cd.xml文件放在一起。打开cd.htm文件,你就看见和上面实例一样的效果了。
第六章:XML相关资源
一. XML的大本营
XML是由W3C(World Wide Web Consortium)国际组织负责开发和制定标准的。关于XML最权威,最新的消息都来自W3C。网址是:http://w3c.org/XML/
另外一个名为OASIS的前著名的SGML研究组织也在一起推动XML的发展,网址是:http://www.oasis-open.org/
二. XML指南
http://www.w3.org/TR/REC-xml
W3C关于XML规范的详细,完整的说明。不用多说,绝对权威。
/axml/testaxml.htm
这是Tim Bary写的XML规范说明书,非常的详细和严密,是学习XML规范的好帮手。
三. XML常见问题
Peter Flynn的 XML FAQ
http://www.ucc.ie/xml/
包含大量详细的资料,经常更新,由W3C协会XML组维护。
Lisa Rein’s finetuning XML FAQs
这个FAQ列表有侧重点,主要包含XSLT FAQ,XPath FAQ和IE5中的XSL FAQ。
Dave Pawson’s XSL FAQ
http://www.dpawson.co.uk/xsl/idx.html
提供最好的关于XSL方面的FAQ,创建于1999年。
jGuru’s Extensible Markup Language (XML) FAQ
/jguru/faq/faqpage.jsp?name=XML
这个FAQ列表是一个典型的&老百晓&,任何问题,从普通的到非常细节的XML问题都可以在这里找到。
Ronald Bourret’s XML Namespaces FAQ
rmatik.tu-darmstadt.de/DVS1/staff/bourret/xml/
NamespacesFAQ.htm
创建于2000初,是关于namespaces概要的FAQ。
四. XML主题网站
一个以XML为主题的内容丰富的网站
http://www./
另一个比较知名的XML网站,提供XML的新闻和资讯。
网站创建者James Tauber’s是W3C组织XML发展组的成员之一,他的网站提供了大量的连接和例子。
网站创建者Simon St. Laurent也是XML发展组的成员。他是W3C中XML初级入门教程的作者,他的站点主要提供有关XML的发展信息。
/xml/c-frame.htm#/xml/default.asp
微软的MSDN关于XML的主题网站。微软在推进XML应用方面不遗余力。
是XML info的姐妹网站,内容包括XML/DTD/XSL编辑软件,XML API软件等。
1999年9月建立的大型XML新闻网站,同时提供XML人才信息。
http://xml.apache.org/
Apache软件基金会(ASF),提供了大量open source的XML和XSL的工具软件。
http://www.biztalk.org/
BizTalk是微软发起的以XML商业应用为目标的组织。BizTalk不是一个标准组织。
五. XML的编辑软件
目前XML文档的编辑软件依然很少。虽然我们可以手工编写,但是如果有一个好的软件(类似用DW/FP编写HTML),可以减少差错和提高效率。下面是现有的一些编辑软件。
/software/dreamweaver/
Macromedia最新的Dreamweaver 4.0已经支持XML文档的编写。推荐使用。
/xml/notepad/intro.asp
微软在这方面向来不会落后,它推出的XML Notepad是一个非常小巧灵活的XML文档编辑器。推荐使用。
/prodindex/framemaker/prodinfosgml.html
Adobe公司的Framemaker plus是目前较好的XML编辑软件。
Arbortext公司是重点开发XML游戏的公司。
Inso,好象是用来处理大型SGML或者XML文档的软件。
Softquad 是HTML和SGML软件的开发商,对XML自然不会放过。
六. 支持XML的浏览器
/windows/ie/
IE 5.X是目前流行浏览器唯一支持XML的,它可以在微软的网站免费下载到。
/software/communicator/ngl/
index.html?cp=dev09fg01
Gecko是另一种支持XML的浏览器,但目前只是测试版。
七. XML parser
Parser是一个检查XML文档语法是否符合DTD定义,并进行解析的软件。
在线的parser
http://validator.w3.org/
W3C组织提供的一个在线paeser。可以根据你在线提交的XML文档URL,进行验证和解吸。
http://www.stg.brown.edu/service/xmlvalid/
一个Brown大学科技小组提供的parser,非常方便和容易理解。。
可下载的Parser
有很多可以下载到本机上运行的parser,下面列出一些主要的:
/xml/expat.html
James Clark是在SGML/XML领域的元老,他写的parser被广泛的运用。
http://www./tech/xml
一个以Java语言编写的Parser,来自IBM。
/xml/parser/cparser.asp
微软的XML Parser,用C++写成。
http://www.stud.ifi.uio.no/~larsga/download/python/xml/xmlproc.html
用Python写的parser。
用Javascript写的parser,只用来检查语法,不进行解吸析。
http://w3c.org/RDF/Implementations/SiRPAC/
来自W3C组织的SiRPAC,全称是Simple RDF Parser and Compiler。
八. Schema编辑软件
Schema我们前面介绍过,DTD就是一种Schema,我们可以手工写DTD,但现在已经有一些Schema编辑软件来帮助我们更方便的建立DTD。
Extensibility这个软件被称为XML权威。可以以图形化方式建立和编辑schema,包括DTD文件。
九. 国内XML资源
http://www./
XML中国论坛是一个非赢利的学术网站。由北京大学计算机科学与技术研究所创办,北大方正集团公司提供赞助。
http://www.:8188
中国XML联盟将建立为国内第一个开放性网络标准组织,提供XML技术认证、咨询和交流。由上海易方公司赞助。
的子站,提供XML文章和技术交流等。
/group/china_xml_list/info.html
中国XML邮件组包括中文XML资源, XML的最新资料,同行的交流空间。由非盈利性组织中国XML联盟负责维护。
http://weblab.crema.unimi.it/xmlzh/XML_FAQ.htm
一个XML FAQ邮件列表的中文翻译,可惜是1998年10月的。
一日精通Ajax技术
Ajax这个名称怎么来的,本人也不得而之了,大概是(Active Javascript Action Xml)吧,说白一点就是运用了 javascript、xmlhttp和xmldom技术及网站后台来处理用户的一些操作的方法吧。
  那么本人就分三步来说明如何使用 Ajax 技术来做开发。
  一、用 javascript 操作 xmlhttp 对象
  二、服务器部对xmlhttp请求的响应(PHP范例)
  三、xmldom 的使用方法
  先说第一部份:
  一、用 javascript 操作 xmlhttp 对象
  IE7, Mozilla ,Firefox等浏览器中,javascript是内置有 XMLHttpRequest 这个对象的,但IE5+则没有,需要用如下方法来启动:
try{ xhttp = new ActiveXObject(&Msxml2.XMLHTTP&;} catch(e){ ; }
if(xhttp == null) try { xhttp = new ActiveXObject(&Microsoft.XMLHTTP&;} catch(e){ ; }
  那考虑不同浏览器的兼容,启动一个xmlhttp一般都要按如下方式:
CODE:[Copy to clipboard]var xhttp =
if(window.XMLHttpRequest){ //IE7, Mozilla ,Firefox 等浏览器内置该对象
xhttp = new XMLHttpRequest();
}else if(window.ActiveXObject){ //IE6、IE5
try{ xhttp = new ActiveXObject(&Msxml2.XMLHTTP&);} catch (e){ ; }
if( xhttp == null) try { xhttp = new ActiveXObject(&Microsoft.XMLHTTP&);} catch (e){; }
  对于 xmlhttp 的使用,一般遵守如下的顺序:
  1、初始化 xmlhttp 对象(上文);
  2、打开链接
xhttp.open(&GET&, purl, true);
  参数一:用 GET 或 POST 方式发送数据
  参数二、请求网址(只能请求你服务器上的资源,一般浏览器安全限制不能读取跨域的数据)
  参数三、true 表示异步传输(服务器返回信息完成前,你可以进行其它操作),false 表示阻断方式的传输。
  3、设定要发送的 http 请求头
  方法:
xhttp.setRequestHeader(key,value);
  一般来说,默认要发送的头是:xhttp.setRequestHeader(&Content-Type&,&application/x-www-form-urlencoded&;
  这种表示发送的内容类型的请求头用于发送文本数据,而且javascript默认是以unicode发送的,还有另外一种形式是:xhttp.setRequestHeader(&Content-Type&,&multipart/form-data&;这表示发送二制形式的数据,由于安全性原因,javascript一般不能用这种方式来发送数据,所以这个头一般没什么用。
  如果你的网站开启了使用 refer 参数来防盗链,那么你必须用这个方法指定 Refer 参数,或者如果用户需要登录才能进行某操作,那么要指定 Cookie 的请求头。
  4、send 数据
  方法:xhttp.send(postdata);
  对于用 get攻手请求,不需要指定postdata,直接用 test.php?a=a&b=b 这样形式的网址来请求即可。
  如果是post方式,需要用 key1=value2&key2=value2 这样的形式来对数据进行处理,把它合并在 postdata 字串中,然后发送。
  注意事项:
  javascript默认发送数据的方式是unicode,处理返回的数据必须是utf-8格式,因此,在发送的时候,需要用escape()函数来处理postdata和网址的value,在服务器上必须还原这些value,并把unicode转为页面编码值,因此如果用 jsp 或 asp.net 都会比较简单,但如果用php处理起来是什么费劲的,等下会教你如何做。
  5、确认服务器返回资料完成下载
  [1] 如果用阻断的方式来发送请求,那么直接用 if(xhttp.readyState == 4)就能判断是否完成。
readyState 的具体属性值为:
2 状态未知
3 正在传送
4 传送完成
  当然为了保障起见,还需要加多一重判断,就是 if(xhttp.status == 200) ,status 就是 http 协议里的返回头代码
1xx 表示(唉呀,忘记了)
2xx 表示成功的信息
3xx 表示页面转移
4xx 页面不存在
5xx 表示服务器的各种错误
  如果你的页面没特殊处理,一般用 if(xhttp.status == 200)
来确信内容返回是正确的
  [2] 如果用异步传输,需要用 onreadystatechange 的事件来监听
xhttp.onreadystatechange = function()
//这里来进行上面阻断方式的判断
if(myajax.xhttp.readyState == 4){
if(myajax.xhttp.status == 200){
//要进行的后续操作
  6、获取返回结果
[1]xhttp.responseB
[2]xhttp.responseS
[3]xhttp.responseX
[4]xhttp.responseT
  其中1、2都是二进制的方式,一般很少会用到,4不用看都知道了
  如果服务端无意外的话[3]返回的是一个xmldom的对象
  二、服务器部对xmlhttp请求的响应(PHP范例)
  为了简化操作,在这里把 xmlhttp的各作操作封装为一个类
  CODE:[Copy to clipboard]function DedeAjax(WiteOKFunc){ //WiteOKFunc 为异步状态事件处理函数
//xmlhttp和xmldom对象
this.xhttp =
this.xdom =
//post或get发送数据的键值对
this.keys = Array();
this.values = Array();
this.keyCount = -1;
//http请求头
this.rkeys = Array();
this.rvalues = Array();
this.rkeyCount = -1;
//请求头类型
this.rtype = 'text';
//初始化xmlhttp
if(window.XMLHttpRequest){//IE7, Mozilla ,Firefox 等浏览器内置该对象
this.xhttp = new XMLHttpRequest();
}else if(window.ActiveXObject){//IE6、IE5
try { this.xhttp = new ActiveXObject(&Msxml2.XMLHTTP&);} catch (e) { }
if (this.xhttp == null) try { this.xhttp = new ActiveXObject(&Microsoft.XMLHTTP&);} catch (e) { }
this.xhttp.onreadystatechange = WiteOKF
//rs: responseBody、responseStream、responseXml、responseText
//以下为成员函数
//--------------------------------
//初始化xmldom
this.InitXDom = function(){
if (typeof(DOMParser) != &undefined&) { // Gecko、Mozilla、Firefox
var parser = new DOMParser();
obj = parser.parseFromString(xmlText, &text/xml&);
} else { // IE
try { obj = new ActiveXObject(&MSXML2.DOMDocument&);} catch (e) { }
if (obj == null) try { obj = new ActiveXObject(&Microsoft.XMLDOM&); } catch (e) { }
this.xdom =
//增加一个POST或GET键值对
this.AddKey = function(skey,svalue){
this.keyCount++;
this.keys[this.keyCount] =
this.values[this.keyCount] = escape(svalue);
//增加一个Http请求头键值对
this.AddHead = function(skey,svalue){
this.rkeyCount++;
this.rkeys[this.rkeyCount] =
this.rvalues[this.rkeyCount] =
//清除当前对象的哈希表参数
this.ClearSet = function(){
this.keyCount = -1;
this.keys = Array();
this.values = Array();
this.rkeyCount = -1;
this.rkeys = Array();
this.rvalues = Array();
//发送http请求头
this.SendHead = function(){
if(this.rkeyCount!=-1){ //发送用户自行设定的请求头
for(;i&=this.rkeyCi++){
this.xhttp.setRequestHeader(this.rkeys[i],this.rvalues[i]);
 if(this.rtype=='binary'){
this.xhttp.setRequestHeader(&Content-Type&,&multipart/form-data&);
this.xhttp.setRequestHeader(&Content-Type&,&application/x-www-form-urlencoded&);
//用Post方式发送数据
this.SendPost = function(purl){
var pdata = &&;
this.state = 0;
this.xhttp.open(&POST&, purl, true);
this.SendHead();
if(this.keyCount!=-1){ //post数据
for(;i&=this.keyCi++){
if(pdata==&&) pdata = this.keys[i]+'='+this.values[i];
else pdata += &&&+this.keys[i]+'='+this.values[i];
this.xhttp.send(pdata);
//用GET方式发送数据
this.SendGet = function(purl){
var gkey = &&;
this.state = 0;
if(this.keyCount!=-1){ //get参数
for(;i&=this.keyCi++){
if(gkey==&&) gkey = this.keys[i]+'='+this.values[i];
else gkey += &&&+this.keys[i]+'='+this.values[i];
if(purl.indexOf('?')==-1) purl = purl + '?' +
purl = purl + '&' +
this.xhttp.open(&GET&, purl, true);
this.SendHead();
this.xhttp.send();
} // End Class DedeAjax
上面代码保存为: dedeajax.js
ok 那现在做个最简单的测试吧
CODE:[Copy to clipboard]&script language='javascript'
src='dedeajax.js'&&/script&
&script language='javascript'&
function WiteOK()
var myinfo = document.getElementById(&myinfo&);
if(myajax.xhttp.readyState == 4){
if(myajax.xhttp.status == 200){
myinfo.innerHTML = myajax.xhttp.responseT
var myajax = new DedeAjax(WiteOK);
myajax.AddKey(&key1&,&----------------------------&);
myajax.SendPost(&test.php&);
&div id='myinfo'&&div&
CODE:[Copy to clipboard]&?
header(&Content-Type: text/ charset=gb2312&);
echo $_POST['key1'];
看到了什么了呢?不用激动,真正让你头痛的东西还没有出来。
把类里面的
CODE:[Copy to clipboard]this.AddKey = function(skey,svalue){
this.keyCount++;
this.keys[this.keyCount] =
this.values[this.keyCount] =//escape(svalue);
escape 屏蔽掉
myajax.AddKey(&key1&,&-----中---国----人-----&;
看到什么了,乱码是吧?呵呵,这回开始头大了
先把 escape放回去
this.values[this.keyCount] = escape(svalue);
那么看到的就是
-----%u4E2D---%u56FD----%u4EBA-----
这些东西弄回来呢?对于php而言这是一个很复杂的问题,如果用asp就简单多了
下面是我写的一个函数:
CODE:[Copy to clipboard]//unicode url编码转gbk编码函数
function Unicode2Gbk($str)
//载入对照词典
if(!isset($GLOBALS['GbkUniDic']))
$ds = file(&./data/gbk_unicode.dic&);
foreach($ds as $l){
$GLOBALS['GbkUniDic'][hexdec('0x'.substr($l,0,4))] = substr($l,5,4);
//处理字符串
$glen = strlen($str);
$okstr = &&;
for($i=0; $i & $ $i++)
if( $glen-$i & 4){
if($str[$i]=='%' && $str[$i+1]=='u'){
$uni = hexdec('0x'.substr($str,$i+2,4));
if(isset($GLOBALS['GbkUniDic'][$uni])){
$uni = $GLOBALS['GbkUniDic'][$uni];
$okstr .= chr(hexdec(substr($uni,0,2))).chr(hexdec(substr($uni,2,2)));
else $okstr .= &&#{&.hexdec(&0x&.$uni).&;&;
$i = $i+5;
else $okstr .= $str[$i];
else $okstr .= $str[$i];
词典文件: /myimg/data.rar
把test.php 输出改为
echo Unicode2Gbk($_POST['key1']);
以下说下面和xml有关的东西的了
  三、xmldom 的使用方法
  由于本文仅是牵针引线的作用,这一章就简单些,因为针对的是 php ,如果针对的是 asp.net 或 jsp 写涉及 web server 类的通信,已经不单纯是 ajax
的问题了,本章的任务是把test2.php
CODE:[Copy to clipboard]&?
header(&Content-Type: text/ charset=gb2312&);
echo '&'.'?'.&xml version=\&1.0\& encoding=\&gb2312\& &.'?'.&&
&item sex=\&男\&&我是小一&/item&
&item sex=\&女\&&我是小二&/item&
?&这个xml文档在客户端用自己的方式展现出来。因为xml这种东西比较麻烦,所以语法也必须严格,test2.htm的页面的源码为
CODE:[Copy to clipboard]&html&
&meta http-equiv=&Content-Type& content=&text/ charset=gb2312&&
&title&ajax测试&/title&
&body onload=&WiteLoadDocument()&&
&script language='javascript'
src='dedeajax.js'&&/script&
&script language='javascript'&
var myajax = new DedeAjax(WiteOK);
function WiteOK()
var myinfo = document.getElementById(&myinfo&);
var mydom =
myinfo.innerHTML = &以下是处理结果:&br/&&;
if(myajax.xhttp.readyState == 4){
mydom = myajax.xhttp.responseX
alert(mydom);
function WiteLoadDocument()
myajax.SendGet(&test2.php&);
&div id='myinfo'&&div&
在IE中测试一下,如果弹出的对话框是 [object] 就表示成功获得返回的xml的xmldoc了。
那下面是处理:
CODE:[Copy to clipboard]function WiteOK()
var myinfo = document.getElementById(&myinfo&);
var mydom =
myinfo.innerHTML = &以下是处理结果:&br/&&;
if(myajax.xhttp.readyState == 4){
mydom = myajax.xhttp.responseX
var nodeList = mydom.selectNodes(&/myhome/item&);
var mynode =
var myatt =
var mysex = &&;
for(i=1;i&=nodeList.i++)
mynode = nodeList[i-1];
for(j=0;j & myinfo.attributes.j++)
if(!mynode.attributes[j])
myatt = mynode.attributes[j];
if(myatt.name=='sex') mysex = myatt.
myinfo.innerHTML += &我是:&+mynode.text+&,我的性别是:&+ mysex +&&br/&&;
CODE:[Copy to clipboard]以下是处理结果:
我是:我是小一,我的性别是:男
我是:我是小二,我的性别是:女
OK,目的已经达到
  关于dom的部份只在IE6中测试过,可能在firefox中会有问题,大家可能参考与兼容性有关的文档。
若举报审核通过,可奖励20下载分
被举报人:
wxyklts2008
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行

我要回帖

更多关于 xml手册 的文章

 

随机推荐