通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>XML专区>>正文 新版上线![旧版]
注:打开慢时请稍等

XML与其相关技术

http://www.iyit.net  日期:2006-5-24 12:05:35  来源:整理转载   点击:
参加讨论】    XML有很多相关的技术,将这些技术结合起来,才能充分发挥XML的强大功能。这些技术包括:Xlink与Xpointer(设置XML的超链接)、DOM(Document Object Model:文件对象模型,存取、操作文件的内容)、Namespaces(解决不同元素有相同名称的问题)、XHTML(下一代的HTML)等。

■Xlink与Xpointer

在XML的规范中,我们看到它并没有规定有关文件链接的问题。为了使XML文件也能够有类似HTML文件超链接的功能,W3C制定了Xlink和Xpionter两种规范,其中Xlink是规定XML文件之间的链接规范(和HTML中的外链接相似),Xpointer是规定XML文件中不同位置之间的链接规范(类似HTML中的内链接)。

1.Xlink:Xlink所设定的链接分为Simple Link和Extended Link。其中,Simple Link的链接功能和HTML的超链接基本上一样,而Extended Link则超出了HTML超链接的功能,它链接的对象可以一次设定多个,由多个标记来共同制定该链接。

在XML文件中使用Xlink元素的时候,必须要在DTD中声明这个元素。完整的声明样本如下(本样本声明了一个名为simple的Simple Link 类型的Xlink元素):

〈!ELEMENT simple ANY〉

〈!ATTLIST simple

xml:link CDATA #FIXED"simple"

href CDATA #REQUIRED

role CDATA #IMPLIED

title CDATA #IMPLIED

inline (true|false) "true"

content-role CDATA #IMPLIED

content-title CDATA #IMPLIED

show (embed|replace|new) #IMPLIED

actuate (auto|user) #IMPLIED

behavior CDATA #IMPLIED〉


可以看到,Xlink元素有多种属性,通过对这些属性赋值,可以编制出多种多样的链接方式。下面我们对这些属性作些解释。

Xml:link:指明链接类型是Simple Link还是Extended Link。

href:用来设定链接的地址,与HTML中A标记中的href属性一样。

role:叙述该链接功能,提供给应用程序读取。

title:叙述该链接功能,提供给用户读取,与HTML中A标记的alt属性相似。

inline:有“true”和“false”两种取值,声明建立的链接是否以嵌入方式链接,缺省为“true”。

content-role和content-title:和role、title类似,但它们叙述的是指向的内容,而不是链接的内容。

show:有三种取值,replace表示将链接的内容取代当前的内容,new表示将链接的内容在一个新的窗口打开,embed表示将链接的内容加入到当前的内容中。

actuate:设置该链接是如何被激活。auto表示XML文件被解读后,链接自动被激活。而user表示,该链接必须被用户手动激活,也就是用户必须要用鼠标点击一下该链接。

behavior:设置该链接被激活后,将自动引发一些动作,可用一些指令来设置链接激活后应用程序要作的事情。

当我们在DTD中声明Xlink元素后,就可以在XML文件中使用这个元素。例如:

〈simple href="http://www.cbinews.com/xml.htm" title="这是一篇介绍XML的文章"

role="XML article" content-role="good" cont-title="first" show="new" actuate="user"

behavior="goto zero"/〉


另外一种Xlink链接方式是Extended Link,它的特点是可以一次设定多个链接对象。同样,在使用Extended Link类型的Xlink元素前必须在DTD中声明这个元素。声明方式和Simple Link类型的Xlink元素类似,不同之处有两点,第一,声明xml:link属性时,语句变为:xml:link CDATA #FIXED “extended”;第二,没有任何href属性和任何目标描述,声明Extended Link类型的Xlink元素,必须包括一套包含href定位的子元素。即在声明了Extended Link类型的Xlink元素之后,还必须声明一个xml:link属性值为locator的子元素。例如:

〈!ELEMENT aaa ANY〉

〈!ATTLIST aaa

xml:link CDATA #FIXED "extended"

inline (true|false) "true"

content-role CDATA #IMPLIED

content-title CDATA #IMPLIED〉

〈!ELEMENT bbb ANY〉

〈!ATTLIST bbb

xml:link CDATA #FIXED "locator"

role CDATA #IMPLIED

href CDATA #REAUIRED

title CDATA #IMPLIED

show (embed|replace|new) "replace"

actuate (auto|user) "user"

behavior CDATA #IMPLIED



这样,我们就可以在XML文件中使用定义过的Extended Link的Xlink元素。如:


〈aaa〉文章资料

〈bbb href="http://www.cbinews.com/XML1.htm title="XML入门"/〉

〈bbb href="http://www.cbinews.com/XML2.htm title="XML进阶"/〉

〈bbb href="http://www.cbinews.com/XML3.htm title="XML应用"/〉

〈/aaa〉


当我们通过CSS或XSL将这个XML文件在浏览器中显示出来后,用户点击“文章资料”这个Extended Link的Xlink链接,将会出现一个选单,列出所有子元素中的标题,并将用户带到相应的位置。

2.Xpointer:Xpointer用来设定XML文件内不同位置的链接,和HTML中的内链接类似,但是,Xpointer提供了5种不同的在XML文件内定位的方法,可将地址定位到相应的地方,功能上比HTML中的内链接更为强大。

绝对定位:root()——将地址定位到XML文件中的根元素位置。

属性名(x)——将地址定位到属性值为x的特定属性位置。

相对定位:child(x)——将地址定位到当前地址下的第x个子标记处。

child(x,y)——将地址定位到当前地址下第x个标记名为y的标记处。

child(x).child(y,z)——将地址定位到当前地址下的第x个标记处,然后将这个标记作为当前地址,再找出该标记下的第y个标记名为Z的控制标记。

范围定位:span(Xpointer1,Xpointer2)——选择所有的在第一个Xpointer开始和第二个Xpointer结束之间的内容。其中Xpointer1、Xpointer2表示其他的定位方法。

属性定位:attr(x)——找出第一个具有x属性的标记。

字符串定位:搜寻特定的字符串,然后将地址定位到特定的字符串处。

合并定位:将上述的定位方法进行组合,产生更多的功能。各种定位方法之间用“.” 符号分隔。

■DOM(Document Object Model)

早在HTML中,DOM就有应用了。DOM可以看作是一种ActiveX对象,它绑定封装了一部分文件存取API(应用程序编程接口),使用户能够使用脚本语言(VBScript、JavaScript等)来调用DOM对象,达到存取、操作文件内容的目的。以前在HTML中,我们利用DOM来创建动态网页,在XML文件中,我们同样可以利用DOM来创建动态网页,并且DOM可以用来加载XML文件,并加以解析、截取和操作XML文件中的信息。

IE 5支持XML和DOM的结合应用,提供了四种DOM对象:XMLDOMDocument、XMLDOMNode、XMLDOMNodeList、XMLDOMnameNodeMap。这些DOM对象提供了很多方法和属性,用法同一般的ActiveX对象也没有什么区别。具体的属性、方法可以参阅微软的Web站点。

我们下面举个例子,3.htm这个HTML文件用到了XMLDOM对象,在这个HTML文件中使用JavaScript创建了DOM对象,然后调用DOM对象,将我们前几期讲XSL时的XML文件、XSL文件的例子读入,然后将XML文件依照XSL样式表的设定显示在浏览器中。例:

〈html〉

〈head〉

〈title〉DOM应用举例〈/title〉

〈SCRIPT LANGUAGE="JavaScript" FOR="window" EVENT="onload"〉

var xmlfile=new ActiveXObject("Microsoft.xmldom");

xmlfile.load("2.xml");

var xslfile=new ActiveXObject("Microsoft.xmldom");

xslfile.load("first.xsl");

document.all.item("DOM应用").innerHTML=xmlfile.transformNode(xslfile.documentElement);

〈/SCRIPT〉

〈/head〉

〈body〉

〈DIV id="DOM应用"〉〈/DIV〉

〈/body〉

〈/heml〉


■Namespaces

考虑一下,当我们建立XML应用的时候,会为具体的行业应用创建特定的DTD,规定可用的元素。有时会出现下面情况——两个同名的元素在不同的地方可能会有不同的含义。例如,我们定义〈title〉这个标记,在书店应用中,这个标记中的字符含义是书的名称,而在人事部门中,这个标记中的字符含义却是人的称谓、头衔。如果我们写一个包含书名、作者、作者身份等信息的XML文件,将在书名和作者身份两个地方用到同样的〈title〉标记,但它们有不同的含义,计算机程序无法分辨哪一个是书名,哪一个是作者身份。这样就给我们的自动化处理带来了问题,这就是Namespaces要解决的问题。Namespaces的概念非常直接——对于每一套特定应用的DTD,给它一个独一无二的标志来代表,如果在XML文件中使用DTD中定义的元素,需将DTD的标志和元素名、属性连在一起使用,相当于指明了元素来自什么地方,这就不会和其他同名元素混淆(像我们的电话号码,两个城市可能存在相同的号码,但是我们在前面用区号将它限定了,一个地方的区号在一个国家中是独一无二的)。在XML中,采用现成的、在全球范围唯一的“域名”作为Namespaces,即用URL作为XML的Namespaces。前面我们学习XSL的时候,实际上就接触到了Namespaces,XSL文件中的标记名称前面都有一个“xsl:”,实际上这就是XSL中元素的Namespaces。声明语句就是:〈xsl:stylesheet xmlns:xsl="http://www.w3.org.TR.WD-xsl"〉,后面的xmlns:xsl="......"。其中,声明中的xsl称为前置字符串,在文件中引用元素时要加上前置字符串,如:〈xsl:templed〉。

例:

〈?xml version="1.0" encoding="GB2312"?〉

〈c:客户名单 xmlns:c="http://www.aaa.com/custom.dtd"〉

xmlns:职工="http://www.aaa.com/employee.dtd〉

〈c:客户〉

〈c:姓名〉张三〈/c:姓名〉

〈c:电话〉028-6666666〈/电话〉

〈c:接待人〉

〈职工:姓名〉李四〈/职工:姓名〉

〈职工:电话〉5555555〈/职工:电话〉

〈/c:接待人〉

〈/c:客户〉

.......


这个例子在前面定义了两个Namespaces——c:和职工:。在应用元素时,前面都加了特定的Namespaces。那么应用程序在读到同名元素,如:〈姓名〉、〈电话〉时,就能够区分哪一个是客户姓名、电话,而哪一个又是本单位职工的姓名、电话了。

利用Namespaces,我们还可以在XML文件中直接利用HTML的标记,不使用Xlink或Xpionter,也让XML文件具有超级链接、显示图片的功能。在使用HTML标记之前,必须声明它的Namespaces。下面这个例子就是XML和HTML的混合使用。

例:

〈?xml version="1.0" encoding="GB2312" ?〉

〈?xml-stylesheet href="first.css" type="text/css" ?〉

〈data xmlns:HTML="http://www.w3.org/TR/XHTM1"〉

〈book〉

〈title〉XML入门精解〈/title〉

〈HTML:a href="mailto:lionliao@yeah.net"〉

〈author〉作者:张三〈/author〉

〈/HTML:a〉

〈picture〉

〈HTML:img src="http://www.iyit.net/Files/BeyondPic/2006-5/24/065241205357187.jpg" width="80" height="80"〉〈/HTML:img〉

〈/picture〉

〈price unit="人民币"〉价格:$20.00〈/price〉

〈content〉

〈HTML:a href="http://www.cbi.com"〉点击查看主要内容〈/HTML:a〉

〈/content〉

〈/book〉

〈/data〉


注意:在XML中使用HTML时要严格遵守XML的语法规定,元素必须正确关闭。

通过CSS或XSL可将这个XML文件显示出来,如图1所示。

■XHTML

XHTML最早叫HTML in XML,就是把过去用SGML定义的HTML,用XML来重新定义(不要忘了,XML是一种定义语言的语言)。实际上,XHTML中的标记基本上还是HTML 4.0中的那些标记,各种标记、属性的用法基本不变。只不过因为它是通过XML定义的,所以必须严格遵守XML的规定,不像过去那样随便。那为什么要发展XHTML呢?

现在,手机上网、信息家电等炒得如火如荼,好像什么都应该连到因特网上。XHTML正是适应这种潮流而出现的。大家知道,现在的HTML越来越复杂,而且存在大量的不规范HTML网页(并不是能够在IE、Netscape正确显示就算是规范的网页),而浏览器为了能够适应这种情况,包容了大量五花八门的HTML网页,已经变得非常臃肿(这就是虽然你的HTML语法错误,有时还是能够正确显示出来的原因,设计浏览器的工程师绞尽脑汁来适应、包容错误)。对于PC来说,这不算什么,因为PC的性能已经得到了很大程度的提升,而对于那些掌中设备、信息家电,可没有这么多存储空间可用。XML标准简单但是非常严格,主要目的就是减轻解析器、浏览器的开发负担以及这些软件的体积。一般的XML解析器的体积不过几百KB。根据XML标准定义出来的XHTML当然继承了XML的特性,同时也保留了HTML在表现形式上的优越性,它摒弃了HTML中的“不干净”代码,提供了良好的可伸缩性,可大可小。

XHTML通过将过去的HTML功能,按照使用者的需要和浏览器的能力,划分为多个模块,每一组模块仅支持部分HTML标记。针对于特定模块开发的解析器、浏览器显然比大而全的解析器、浏览器体积要小得多。这就达到了“可小”的目的。比如说:掌上电脑屏幕本身很小,显然它浏览网页的时候不需要使用HTML中的“Frame”功能,那么针对这种设备,有它专门的一套适用的、不包含“Frame”的标记。当然,每个模块都需要有它们的专用DTD来声明可以使用哪些标记。现在W3C已经定义好了几种专用的DTD。

“可大”呢?实际上就是利用XML的特点,XML是什么?可扩展标记语言呀!以前,HTML中的标记是已经定义好了的,是不能够改变,只能拿来使用,而XHTML就可以像XML一样,能够自定义标记。

使用XHTML和使用HTML基本上一样,不过要注意的是,我们再不能偷懒了。XHTML也像XML一样,首先必须是Well-Formed。规则如下:

1. 标记必许正确结束。

2. 标记与标记之间不允许交叉嵌套。像以前的“〈i〉斜体〈b〉粗斜体〈/i〉〈/b〉”这样的语句是不行的,而必须写成“〈i〉斜体〈b〉粗斜体〈/b〉〈/i〉”才合格。

3. 空元素(开始标记与结束标记间无内容)必须按XML的规定写成〈元素名/〉。

4. 属性值必须用“ ”号括起来,像以前的“〈td width=100〉”的语句必须改写成“〈td width="100"〉”。

5. 属性都要赋值。以前有些标记的属性如果不赋值,它就取缺省值,在XHTML中,必须明确地给它赋值。

6. 标记名称、属性名称都用小写字母。

7. 使用正确的根元素加上Namespaces。

8. 〈head〉〈body〉不能够省略。〈title〉必须是〈head〉中出现的第一个子元素。

9.原来HTML网页中的VBScript、JavaScript、样式表区域,必须像XML的CDATA区一样包装起来,如:

〈script language="JavaScript"〉

〈![CDATA[

......

if (i 〈 3 &&&& ......

]]〉

〈/script〉


满足了上述条件,并不表示XHTML就是最好的,而仅仅是格式正确的XHTML文件,需要正确地引用DTD,才成为真正正确的XHTML。W3C已经定义了三种XHTML的DTD供大家使用,它们分别是Strict、Transitional、Frameset。从现在开始,写HTML网页时就需要按照XHTML的规定来写,并且最好不要用font之类的标记,尽量使用CSS来表现你的HTML网页。等到XHTML、XML普及了,你就会暗笑了,因为你实现网页转换是非常容易的。

本系列讲座介绍了XML的语法、结构以及相关的一些技术。并非了解这些,就能够使用XML了。有关XML的具体开发应用现在的讨论也是非常多,如:XML用于电子商务、XML用于文档管理、XML用于数据驱动应用程序等。我们学习XML,关键就是要在以后的开发中应用它,明白了XML的基础知识,将会在应用开发中起到重要作用。

编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:CSS与XSL简述
下一篇:WML语言基础
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
XML和现代CGI应用程序 XML文件的显示——CSS和XSL 给XML文件定义DTD
动态产生XML文档的几种方式 XML初级应用ABC 编写结构完整的XML文档
XML(可扩展标识语言)的产生 构造未来Web页面的工具语言-- XML XML 入门介绍
XML入门精解之结构与语法 XML基础教程:掌握SAX XML基础入门
建立MSXML 测试环境 XML 论坛 让Asp与XML交互
How to generate XML with SQL 2000 XML的一般信息 存取XML的属性
筛选和排序XML数据 使用XSL样式表来显示XML文件 检查XML文件的有效性
浏览整个XML文件 存取XML实体与卷标 存取与显示XML文件的属性值
最新更新 热点排行 推荐新闻
WML Script标准函数库
WML Script脚本程序设计(二)
WML Script脚本程序设计(一)
WML Script语法基础
WML编程
CGI测试
CGI教程-ErrorDocument 指令
CGI教程-解码数据发送给CGI脚本
跟我学Perl
Perl教学 Perl5的包和模块
Perl教学 Perl的面向对象编程
Perl教学 Perl5中的引用(指针)
Perl教学 格式化输出
Perl教学 关联数组(哈希表)
Perl教学 子程序
WML Script标准函数库
WML Script脚本程序设计(二)
WML Script脚本程序设计(一)
WML Script语法基础
WML编程
优秀公益广告作品欣赏(8)
java数据类型转换
Windows XP专业版IIS连接数的更改
新开放QQ免费挂级网站
优秀公益广告作品欣赏(7)
免费在QQ上看在线电影电视听音乐
QQ珊瑚虫外挂4.0版本发布!
WEB服务器配置全攻略(三)
免费把QQ炫铃设为本机QQ的系统提示音
Office2007简体中文版浮出水面 美图抢
微软将在华推分期付款,充值卡PC 可低价
 AMD处理器AM2测试 风扇竟运行7分钟
exeplorer.exe错误的问题的总结、解决
ASP.NET 2.0 中的异步页功能应用
硬盘坏道修复及数据恢复宝典
免费登录搜索引擎入口大全
搜索引擎注册九大秘法
小心摄像头成为黑客偷窥你的眼睛
内存混插常见问题和解决方法
Office2007简体中文版浮出水面 美图抢
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息