XML相关技术XlinkXpointerDOMSAXWebServices和SOAP在HTML中表示链接的标记是A,通过标记A,可以从一个文件链接到另一个文件,或者链接到文件的某一部分。另外,使用标记IMG等可以将图象直接嵌入网页。下面就是一个典型的HTML链接的例子:Ahref=链接存在着明显的局限性:(1)HTML链接是单向的,它只能从链接所在的文件指向另一个文件。也就是说,我们可以通过标记A的href属性知道该文件的若干链接目标,但无法知道又有哪些文件链接到该文件,不知道它有哪些链接源。(2)HTML链接只能指向一个文件,在需要指定多个链接的时候,不得不使用多个A标记,而由于HTML是非结构化的,这些链接的关系和结构信息无法表现。(3)HTML可以链接到文件内部的某一部分,这通过在目标文件中插入命名锚(namedanchor)来实现。但是,如果源文件和目标文件由不同的人员负责,甚至在不同的站点上,两个文件的协作就成为问题。HTML的链接XML链接在HTML链接的功能之上又加以扩展,可以支持更为复杂的链接。通过XML链接,不仅可以在XML文件之间建立链接,而且可以建立其他类型数据之间的链接。不仅如此,XML链接还为文件内部定位提供了全新的方式,允许链接的建立者利用文件结构指定文件内部的资源片断。(1)利用简单XML链接,可以轻松地实现HTML中的链接功能;利用扩展XML链接,可以在多个资源之间建立链接,还可以建立多向的链接;(2)利用XPointer在一个XML文件内部的定位功能,可以利用目标文件的结构指定所链接的资源,而无需对目标文件进行任何修改。(3)利用链接库,可以将链接从文件中分离出来,就象用XSL文件把样式转换信息从XML文件中独立出来一样,从而简化链接的管理。XML链接规范分为三个部分:XLink语言、XPointer语言和XMLBase,关于Xlink的讨论基于XLink语言规范2000年7月3日候选标准;有关XPointer的讨论基于XPointer语言规范2000年6月7日候选标准;有关XBase的讨论基于XBase规范2000年6月7日工作草案。当前这几个规范都不是正式标准,因此并不稳定,某些内容会随着规范的发展而变化,建议大家在具体应用时参考一下W3C公布的最新版本。XML的链接?xmlversion=1.0?guitarsxmlns=:xlink==Bourgeoisxlink:type=simplexlink:href=:type=simplexlink:href=:actuate=onLoadxlink:show=embedThisisarealbeautyinasmallbody.AlthoughthisisanOM,Iuseitforflatpickingbluegrassaswellasforproducingsomebeautifulfingerstylesounds./description/guitar/guitarsXML链接的例子LINKxmlns:xlink=:type=simplexlink:href=:role=studentlistxlink:title=StudentListxlink:show=replacexlink:actuate=onRequestListofStudents/LINKAhref=链接vs.HTML链接!ELEMENTLINK(#PCDATA)!ATTLISTLINKxmlns:xlinkCDATA#FIXED:type(simple)#FIXEDsimplexlink:hrefCDATA#REQUIREDxlink:roleCDATA#IMPLIEDxlink:titleCDATA#IMPLIEDxlink:show(embed|replace|new)replacexlink:actuate(onLoad|onRequest)onRequestALTCDATA#IMPLIEDALIGNCDATA#IMPLIEDXML链接的DTD简单XMLLink简单XML链接与HTML链接非常相似,它在两个资源之间建立关联。这两个资源分别是文件中的链接元素和XLink全局属性href所指向的资源,其中链接元素为本地资源或起始资源,href所指向的资源为远程资源或目标资源。可以用简单XML链接实现HTML链接,!ELEMENTA(#PCDATA)!ATTLISTAxmlns:xlinkCDATA#FIXED:type(simple)#FIXEDsimplexlink:hrefCDATA#REQUIREDxlink:roleCDATA#IMPLIEDxlink:titleCDATA#IMPLIEDxlink:show(embed|replace|new)replacexlink:actuate(onLoad|onRequest)onRequest可以利用上面的DTD声明,我们可以定义元素A的实例:Axlink:href=!/A对照HTML中的链接的例子:Ahref=!/A简单XMLLinkvs.HTML链接可以发现,两种写法已经非常接近,除了XML中具有xlink前缀表示XLink命名空间,其他都完全一样(这里我们假设命名空间已经在文件首部声明)。同样,它们在浏览器上的表现也应该是一样的。在上例中所链接的资源是元素A和所指向的资源,下面是它的示意图。XML链接的示意同样,我们可以使用XLink实现HTML中的IMG标记:!ELEMENTIMGEMPTY!ATTLISTIMGxmlns:xlinkCDATA#FIXED:type(simple)#FIXEDsimplexlink:hrefCDATA#REQUIREDxlink:showCDATA#FIXEDonLoadxlink:actuateCDATA#FIXEDembedALTCDATA#IMPLIEDALIGNCDATA#IMPLIEDHEIGHTCDATA#IMPLIEDWIDTHCDATA#IMPLIEDBORDERCDATA#IMPLIED当然,HTML中IMG标记的属性比上面列出的多一些,但是如果忽略那些不常使用的属性,使用上面的DTD声明定义实例,就可以在XML文件中嵌入图象资源。IMGxlink:href=imgEmbed.gif/Xlink实现IMG类型(xlink:type)属性决定了链接或资源的类型,XLink处理程序根据xlink:type的值决定如何处理链接元素,但是处理程序的动作并不仅仅取决于这一个属性,它还将取决于下面将要提到的行为属性。对XLink而言,xlink:type属性可以在元素的开始标记中定义,也可以在DTD中定义缺省值,但必须使XML分析器分析到链接元素时能够得到属性xlink:type的值。xlink:type属性的取值可以是simple、extended、locator、arc、resource、title和none其中之一。对简单XML链接,type属性固定取值为“simple,前面定义的A标记和IMG标记都是简单XML链接的例子。简单链接使用的属性-type属性如果一个元素的xlink:type属性取值为none,那么该元素就不是一个链接元素,不具有链接意义。如果该元素还具有一些与链接相关的其他属性或子元素,这些属性和内容也将失去其链接意义。例如下例中的NOLINK元素中包括的子元素LINK,虽然指定了xlink:type为simple,但仍然不具有链接意义。NOLINKxmlns:xlink=:type=noneLINKxlink:type=simplexlink:href=:role=studentlistxlink:title=StudentListxlink:show=replacexlink:actuate=onRequestListofStudents/LINK/NOLINKtype属性取值none一般情况下,可以将简单XML链接元素的DTD定义如下:!ELEMENTLINK(#PCDATA)!ATTLISTLINKxmlns:xlinkCDATA#FIXED:type(simple)#FIXEDsimplexlink:hrefCDATA#REQUIRED……但在某些情况下,元素LINK仅仅在文件某些地方作为链接元素出现,而在其他地方作为普通元素出现。此时,可以将DTD定义为:!ELEMENTLINK(#PCDATA)!ATTLISTLINKxmlns:xlinkCDATA#FIXED:type(none|simple)#REQUIREDxlink:hrefCDATA#REQUIRED……在利用该DTD创建XML文件时,只要在需要链接元素的地方,将xlink:type属性取值为simple,在其他地方则取值为none。如果需要将链接元素改为非链接元素,只要简单地将xlink:type属性的值由simple改为none即可,反之亦然。XML链接元素的DTD定义XML链接元素的寻址属性是指xlink命名空间的href属性,它指定了链接的目标资源。该属性的取值是一个URI,它可以是一个文件或文件中的某一特定位置。XML链接的xlink:href属性与HTML链接的href属性基本相同,如:LINKxmlns:xlink=:type=simplexlink:href=:xlink=:type=simplexlink:href=students.xml/LINKLINKxmlns:xlink=