新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论XLink, XPointer, XQuery
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XQuery/XLink/XPointer/ 』 → XLink 教程(1) 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6760 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: XLink 教程(1) 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     yuji1998 帅哥哟,离线,有人找我吗?魔羯座1981-12-22
      
      
      威望:5
      头衔:蓝色先锋
      等级:大二(研究C++)
      文章:212
      积分:1059
      门派:XML.ORG.CN
      注册:2004/4/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yuji1998发送一个短消息 把yuji1998加入好友 查看yuji1998的个人资料 搜索yuji1998在『 XQuery/XLink/XPointer/ 』的所有贴子 访问yuji1998的主页 引用回复这个贴子 回复这个贴子 查看yuji1998的博客楼主
    发贴心情 XLink 教程(1)

    来源: [URL=http://www.lanshang.com]蓝尚WEB 技术论坛[/URL]

             XLL(可扩展的链接语言,eXtensible Linking Language)分为两部分:XLink和XPointer。XLink(即XML链接语言,XML Linking Language)定义一文档如何与另一文档的链接。XPointer(即XML指针语言,XML Pointer Language)定义文档的各部分如何寻址。XLink指向URI(实际为URL),以指定特定的资源。此URL可能包含XPointer部分,更明确地标识目标资源或文档所期望的部分或节。本章探讨XLink,下一章将探讨XPointer。

    本章的主要内容如下:

    * XLink与HTML链接的对比

    * 简单链接

    * 扩展链接

    * 外联链接

    * 扩展链接组

    * 如何重新命名XLink特性

    16.1 XLink与HTML链接的对比

    Web征服已经建立起来的Gopher协议的一个主要原因是:在文档中可嵌入超文本链接。这些链接可以嵌入影像或让用户从一文档内部跳转到另一文档或同一文档的另一部分。在某种程度内,XML可转变成其他格式以便于浏览,HTML用于链接的句法与XML文档中使用的句法是一样的。使用XSL,可将各自的句法转变成HTML句法,就像第14章的几个例子中所看到的那样。

    但是,HTML链接具有局限性。首先,URL通常只限于指向单一文档。如果比这种要求更为详细如链接于一文档中第17段的第三句,就需要手工在目标文件中插入命名的定位符(锚)。如果对链接的文档没有写访问权,是不会做到这一点的。

    而且,HTML链接不保留文档之间的历史或关系内容。尽管浏览器可以跟踪浏览的一系列文档的路径,但这种跟踪是很不可靠的。从HTML内部,没有任何方法知道读者是从哪里来的。链接纯粹是单方向的。用来链接的文档知道它正与谁进行链接,但反过来则不行。

    XLL可获得文档间的更强有力的链接。它是专为XML文档设计的,但有些部分也可以与HTML文档一起使用。XLL可以实现使用HTML的基于URL超文本链接和定位可获得的任何功能。但是,除此之外,它还支持多方位的链接,即以多个方向同时进行链接。任何元素都可以成为一个链接,而不仅仅是A元素。甚至不需要将链接保存在与链接文档相同的文件中。此外,XPointer部分(将在下一章讨论)允许对XML文档中的任意位置进行链接。这些功能使XLL不仅更适合于新的用途,而且还适合于只使用HTML要花很大气力才能达到的功能,如交叉引用、脚注、尾注、互连数据等等。

    请读者注意,直到编写此书时(1999年春天),XLL仍处于重大的开发和修改阶段。尽管正在逐渐成形,但在读者阅读本书时可能会或多或少地发生变化。

    此外,到目前为止,还没有任何一个多用途的应用程序能支持任意的XLink。这是因为XLink的适用性要比HTML链接广得多。XLink不仅仅用于超文本的连接,还可用于在文档中嵌入影像。可被任何一个需要在文档和文档的局部之间建立连接的常用应用程序用于任何目的。因此,甚至当XLink在浏览器中得以完整执行时,也许并非总是单击可跳转到另一页的蓝色下划线文本。可以是那样,但也可以根据需要决定蓝色的下划线文本的多寡。

    16.2 简单链接

    在HTML中,链接是用<A>标记来定义的。但就像XML使用描述元素的标记更灵活一样,使用引用外部资源的标记也更为灵活。在XML中,几乎任何标记都可以是一个链接。包括链接的元素称作链接元素(linking element)。

    链接元素是由值为simple或extended的xlink:form特性来标识的。而且,每个链接元素包含一个值为链接资源的URI的href特性。例如,下面是三个链接元素:

    <FOOTNOTE xlink:form="simple" href="footnote7.xml">7</FOOTNOTE>

    <COMPOSER xlink:form="simple" inline="true"

    href="http://www.users.interport.net/~beand/">

    Beth Anderson

    </COMPOSFR>

    <IMAGE xlink:form="simple" href="logo.gif"/>

    注意,此元素具有描述它们所包含内容的语义名称,而不是这些元素如何表现。这些元素使链接的信息包含在标记的特性中。

    这三个例子是简单的XLink。简单的XLink类似于标准的HTML链接,并在更复杂(以及功能强大)的扩展链接之前很可能为应用程序的软件所支持,所以,我首先使用它们。扩展链接在下节讨论。

    在上面的FOOTNOTE实例中,链接目标特性名为href。其值为相对的URL footnote7.xml。此文档的协议、主机以及路径都取自出现这种链接的文档中的协议、主机以及路径。

    在上面的COMPOSER示例中,链接目标特性名为href。此href特性值为绝对的URL http: //wwwusers.interport.net/~beand/。在上面的第三个示例IMAGE中,链接目标特性名为href。此href特性值为相对的URL logo.gif。这时同样本文档的协议、主机以及路径都取自出现这种链接的文档中的协议、主机以及路径。

    如果文档有一个DTD,那么这些特性必须和其他特性一样进行声明。例如,FOOTNOTE、COMPOSER和IMAGE元素的DTD声明可以按下面的方式进行:

    <!ELEMENT FOOTNOTE (#PCDATA)>

    <!ATTLIST FOOTNOTE

    xlink:form CDATA #FIXED "simple"

    href CDATA #REQUIRED

    >

    <!ELEMENT COMPOSER (#PCDATA)>

    <!ATTLIST COMPOSER

    xlink:form CDATA #FIXED "simple"

    href CDATA #REQUIRED

    >

    <!ELEMENT IMAGE EMPTY>

    <IATTLIST IMAGE

    xlink:form CDATA #FIXED "simple"

    href CDATA #REQUIRED

    >

    使用这些声明,xlink:form特性就有一个确定值。所以,这一特性就不需要包括在元素的实例中,现在可以将这些元素按照下列方式书写得更简洁一些:

    <FOOTNOTE href="footnote7.xml">7</FOOTNOTE>

    <COMPOSER href="http://www.users.interport.net/~beand/">

    Beth Anderson

    </COMPOSER>

    <IMAGE href="logo.gif"/>

    使一元素成为链接元素对元素的其他特性或内容不存在限制。链接元素可以包含任意的子元素或其他特性,当然总是受制于DTD。例如,下面为IMAGE元素的更真实的声明。注意,大多数特性与链接无关。

    <!ELEMENT IMAGE EMPTY>

    <!ATTLIST IMAGE

    xlink:form CDATA #FIXED "simple"

    href CDATA #REQUIRED

    ALT CDATA #REQUIRED

    HEIGHT CDATA #REQUIRED

    WIDTH CDATA #REQUIRED

    >

    16.2.1 本地资源的描述

    链接元素可以包含可选的content-role和content-title元素,这两个元素用于在链接元素出现的文档内提供附加的信息,并进一步描述此链接的目的。例如:

    <AUTHOR href=http://www.macfaq.com/personal.html

    content-title="author of the page"

    content-role="whom to contact for questions about this page">

    Elliotte Rusty Harold

    </AUTHOR>

    content-role和content-title特性描述本地资源,即链接元素的内容(本例中的Elliotte Rusty Harold)。但是,这些特性不描述远程的资源(如本例中为位于http://www.macfaq.com/personal.html处的文档)。因此,本例说明Elliotte Rusty Harold具有"author of the page"的头衔,其作用为"whom to contact for questions about this page"。本例也无需与在http://www.macfaq.com/personal.html处找到的文档有任何关系。

    content-title特性通常是由读入XML的应用程序所使用,以便在用户将鼠标移到链接的元素之上时,在浏览器状态条上或通过工具提示为用户显示一些附加信息。但是,应用程序不一定要为用户显示这种信息。如果此特性选择了这么做,那么它就只能如此。

    content-role特性表示文档中链接元素的目的。此特性与准备将数据传递给读入XML的应用程序中的处理指令相类似。可是,它的真正目的并不是作为XML来使用,并且应用程序可以任意忽略此特性。

    像所有的其他特性一样,content-title和content-role为了用于包含它们的所有元素也应在DTD中进行声明。例如,下面的合理声明可用于上面的AUTHOR元素:

    <!ELEMENT AUTHOR (#PCDATA)>

    <IATTLIST AUTHOR

    xlink:form CDATA #FIXED "simple"

    href CDATA #REQUIRED

    content-title CDATA #IMPLIED

    content-role CDATA #IMPLIED

    16.2.2 远程资源的描述

    链接元素可以包含可选的role和title特性,用来描述远程资源,即链接所指向的文档或其他资源。例如:

    <AUTHOR href=http://www.macfaq.com/personal.html

    title="Elliotte Rusty Harold s personal home page"

    role="further information about the author of this page"

    content-title="author of the page"

    content-role="whom to contact for questions about this page">

    Elliotte Rusty Harold

    </AUTHOR>

    role和title特性描述远程资源,而不是本地元素。在上面的实例中,远程资源就是http://www.macfaq.com/personal.html处的文档。因此,下面的实例说明http://www.macfaq.com/personal.html处的网页标题为“Elliotte Rusty Harold s personal home page",作用为"further information about the author of this page"。要使title与链接网页的TITLE元素内容相同是很平常的,尽管不必这样做。

    读入XML的应用程序可以使用这两个特性来为用户显示附加的信息。但应用程序无需将这种信息显示给用户或用它来做任何事。

    在链接文档(链接出发的文档)中,role特性说明远程资源(被链接的文档)的目的。例如,可用特性来区别脚注、尾注和引文。

    与所有的其他特性一样,为了用于包含它们的所有元素,应在DTD中声明title和role特性。例如,下面的合法声明可用于上面的author元素:

    <!ELEMENT AUTHOR (#PCDATA)>

    <!ATTLIST AUTHOR

    xlink:form CDATA #FIXED "simple"

    href CDATA #REQUIRED

    content-title CDATA #IMPLIED

    content-role CDATA #IMPLIED

    title CDATA #IMPLIED

    role CDATA #IMPLIED

    >

    16.2.3 链接行为

    链接元素可以包含三个可选特性,这些特性可以建议应用程序如何将远程资源与当前页关联。下面即为这三种特性:

    1.show

    2.actuate

    3.behavior

    show特性提示当激活链接时,应如何显示内容,例如,通过打开一个新窗口来保存内容。actuate特性提示此链接是否可以自动切断或是否要求有明确的用户请求。behavior特性可为应用程序提供有关如何准确地切断链接的详细信息,如在切断链接之前的一段时间迟延。但是,这些特性都是与应用程序相关的,并且应用程序可任意忽略这些提示。

    16.2.3.1 show特性

    show特性有三个合法值:replace、new和embed。

    当激活链接(通常是由单击此链接而发生的,至少在GUI浏览器中是如此)时使用replace值,则链接的目标代替同一个窗口中的当前文档。这是HTML链接的缺省行为。例如:

    <COMPOSER href="http://www.users.interport.net/~beand/"

    show="replace">

    Beth Anderson

    </COMPOSER>

    使用new值时,激活链接就打开新的窗口,以显示目标资源。这种行为与target特性设置为_blank时的HTML链接类似。例如:

    <WEBSITE href="http://www.quackwatch.com/" show="new">

    Check this out, but don t leave our site completely!

    </WEBSITE>

    读者不希望在单击链接后打开新的窗口,倒希望在单击链接后,把新页加载到当前窗口中,除非明确地要求在新窗口中打开这种链接。

    有些公司相当自傲,以至他们认为任何一个用户从不会离开他们自己的站点。于是,他们就“帮助”读者打开新的窗口。在大多数时候,这只能使读者感到困惑和厌恶。如果没有一个很好的理由,就不要改变用户所期望的那种行为。让读者在站点上花费额外的两秒钟,或者多浏览一页,多看一页的广告,这种浮浅的欲望是毫无道理的。

    使用embed值,激活链接将会在现有的文档中插入目标资源。其准确的含义是与应用程序相关的。但是,可以想象,此值用于Web页的客户端"嵌入"功能。例如,下面的这个元素(并没有直接包括家庭成员的各个元素)将家庭成员的各个元素从各自的文件ThomasCorwinAnderson.xml、LeAnahDeMintEnglish.xml、JohnJayAnderson.xml和SamuelEnglishAnderson.xml中复制出来。

    <FAMILY ID="f732">

    <HUSBAND href="ThomasCorwinAnderson.xml" show="embed"/>

    <WIFE href="LeAnahDeMintEnglish.xml" show="embed"/>

    <CHILD href="JohnJayAnderson.xml" show="embed"/>

    <CHILD href="SamuelEnglishAnderson.xml" show="embed"/>

    </FAMILY>

    切断链接并将其内容嵌入到FAMILY元素中之后,结果如下所示:

    <FAMILY ID="f732">

    <PERSON ID="plO35" SEX="M">

    <NAME>

    <GIVEN>Thomas Corwin</GIVEN>

    <SURNAME>Anderson</SURNAME>

    </NAME>

    <BIRTH>

    <DATE>24 Aug 1845</DATE>

    </BIRTH>

    <DEATH>

    <PLACE>Mt. Sterling, KY</PLACE>

    <DATE>18 Sep 1889</DATE>

    </DEATH>

    </PERSON>

    <PERSON ID="pl098" SEX="F">

    <NAME>

    <GIVEN>LeAnah (Lee Anna, Annie) DeMint</GIVEN>

    <SURNAME>English</SURNAME>

    </NAME>

    <BIRTH>

    <PLACE>Louisville, KY</PLACE>

    <DATE>1 Mar 1843</DATE>

    </BIRTH>

    <DEATH>

    <PLACE>acute Bright s disease, 504 E. Broadway</PLACE>

    <DATE>31 Oct 1898</DATE>

    </DEATH>

    </PERSON>

    <PERSON ID="pll02" SEX="M">

    <NAME>

    <GIVEN>John Jay (Robin Adair )</GIVEN>

    <SURNAME>Anderson</SURNAME>

    </NAME>

    <BIRTH>

    <PLACE>Sideview</PLACE>

    <DATE>13 May 1873</DATE>

    </BIRTH>

    <DEATH>

    <DATE>18 Sep 1889 </DATE>

    </DEATH>

    </PERSON>

    <PERSON ID="p37" SEX="M">

    <NAME>

    <GIVEN>Samuel English</GIVEN>

    <SURNAME>Anderson</SURNAME>

    </NAME>

    <BIRTH>

    <PLACE>Sideview</PLACE>

    <DATE>25 Aug 1871</DATE>

    </BIRTH>

    <DEATH>

    <PLACE>Mt. Sterling, KY</PLACE>

    <DATE>10 Nov 1919</DATE>

    </DEATH>

    </PERSON>

    </FAMILY>

    尽管每个PERSON元素都存在于独立的文件中,但处理全部的FAMILY元素就像是在一个文件中一样。

    像合法文档中的所有特性一样,对于DTD的链接元素,show特性必须在<!ATTLIST>声明语句加以声明。例如:

    <!ELEMENT WEBSITE (#PCDATA)>

    <!ATTLIST WEBSITE

    xlink:form CDATA #FIXED "simple"

    href CDATA #REQUIRED

    show (new | replace | embed) "new"

    >

    16.2.3.2 actuate特性

    链接元素的actuate特性有两个可能的值:user和auto。user值为缺省值,它指定仅当用户请求时,才切断链接。另一方面,如果链接元素的actuate特性设置成auto,则在同一个链接元素的其他目标资源被切断时,都要切断此链接。

    正如合法文档中的所有特性一样,对于出现链接的链接元素,actuate特性必须在DTD的<!ATTLIST>声明语句中声明。例如:

    <!ELEMENT WEBSITE (#PCDATA)>

    <IATTLIST WEBSITE

    xlink:form CDATA #FIXED "simple"

    href CDATA #REQUIRED

    show (new | replace | embed) "new"

    actuate (user | auto) "user"

    >

    16.2.3.3 behavior特性

    behavior特性用来将任意格式的任意数据传递给读入此数据的应用程序中。应用程序使用这些数据来对如何进行链接作出附加说明。例如,如果要指定在切断链接时,播放声音文件fanfare.au,可按下面进行编写:

    <COMPOSER xlink:form="simple"

    href="http://www.users.interport.net/-beand/"

    behavior="sound: fanfare.au">

    Beth Anderson

    </COMPOSER>

    用于DTD的快捷方式

    由于特性名及类型都是标准化的,如果在一篇文档中有多个链接元素,那么将特性声明变成参数实体引用,并只在每个链接元素的声明中重复这种引用常常是方便的。例如:

    <!ENTITY % link-attributes

    "xlink:form CDATA #FIXED ¢ simple¢

    href CDATA #REQUIRED

    behavior CDATA #IMPLIED

    content-role CDATA #IMPLIED

    content-title CDATA #IMPLIED

    role CDATA #IMPLIED

    title CDATA #IMPLIED

    show (new | replace | embed) ¢ new¢

    actuate (use | auto) ¢ use¢

    behavior CDATA #IMPLIED"

    >

    <!ELEMENT COMPOSER (#PCDATA)>

    <!ATTLIST COMPOSER

    %link-attributes;

    >

    <!ELEMENT AUTHOR (#PCDATA)>

    <!ATTLIST AUTHOR

    %link-attributes;

    >

    <!ELEMENT WEBSITE (#PCDATA)>

    <!ATTLIST WEBSITE

    %link-attributes;

    >

    但是,这样就要求读入XML文件的应用程序理解带有值为sound:fanfare.au的behavior特性即意味着当切断链接时,应播放fanfare.au声音文件。大多数(或许所有的)应用都不能理解这种含义。但是,它们可以将behavior特性当作易于使用的保存它们确实能够理解的非标准信息的地点。

    正如合法文档中的所有特性一样,对于出现链接的链接元素,其behavior特性必须在DTD中声明才行。例如:下面的COMPOSER元素可按下面方式声明:

    <!ELEMENT COMPOSER (#PCDATA)>

    <!ATTLIST COMPOSER

    xlink:form CDATA #FIXED "simple"

    href CDATA #REQUIRED

    behavior CDATA #IMPLIED

    >

    16.3 扩展链接

    简单链接的效果或多或少地与HTML中已经熟悉了的标准链接类似。每个简单链接都包含一个本地资源和对一个远程资源的引用。本地资源为链接元素的内容,而远程资源则为链接的目标。

    但是,扩展链接(Extended link)实质上超越了HTML链接所能达到的程度,以便在许多文档和外联链接之间包括多方向的链接。扩展链接由xlink:form特性来指定,其值为extended,如:

    <WEBSITE xlink:form="extended">

    扩展链接的第一个作用就是指向多个目标。为此,扩展链接将目标保存在链接元素的子locator元素中,而不像简单链接那样保存在链接元素的唯一的href特性中。例如:

    <WEBSITE xlink:form="extended">Cafe au Lait

    <locator href="http://metalab.unc.edu/javafaq/">

    North Carolina

    </locator>

    <locator

    href="http://sunsite.univie.ac.at/jcca/mirrors/javafaq/">

    Austria

    </locator>

    <locator href="http://sunsite.icm.edu.pl/java-corner/faq/">

    Poland

    </locator>

    <locator href="http://sunsite.uakom.sk/javafaq/">

    Slovakia

    </locator>

    <locator href="http://sunsite.cnlab-switch.ch/javafaq/">

    Switzerland

    </locator>

    </WEBSITE>

    本例中的链接元素WEBSITE本身和各locator子元素都可以有特性。链接元素只有适用于整个链接以及本地资源的特性,如content-title和content-role。locator元素具有应用于特定的远程资源(locator元素链接于这些资源)的特性,如role和title。例如:

    <WEBSITE xlink:form="extended" content-title ="Cafe au Lait"

    content-role="Java news">

    <locator href="http://metalab.unc.edu/javafaq/"

    title="Cafe au Lait" role=".us"/>

    <locator

    href="http://sunsite.univie.ac.at/jcca/mirrors/javafaq/"

    title="Cafe au Lait" role=".at"/>

    <locator href="http://sunsite.icm.edu.pl/java corner/faq/"

    title="Cafe au Lait" role=".pl"/>

    <locator href="http://sunsite.uakom.sk/javafaq/"

    title="Cafe au Lait" role=".sk"/>

    <locator href="http://sunsite.cnlab-switch.ch/javafaq/"

    title="Cafe au Lait" role=".ch"/>

    </WEBSITE>

    actuate、behavior和show(如果存在)属于各个locator元素。


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    私人网站:蓝尚WEB商务平台http://www.lanshang.com     建站黄页:http://www.lanshang.com/link.asp WEB技术文库:http://www.lanshang.com/wenzhang/ 
    电子书籍: http://www.lanshang.com/ebook/  技术交流:http://www.lanshang.com/bbs/

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/7/7 19:00:00
     
     faly 美女呀,离线,快来找我吧!
      
      
      等级:大一(高数修炼中)
      文章:148
      积分:460
      门派:XML.ORG.CN
      注册:2003/11/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给faly发送一个短消息 把faly加入好友 查看faly的个人资料 搜索faly在『 XQuery/XLink/XPointer/ 』的所有贴子 引用回复这个贴子 回复这个贴子 查看faly的博客2
    发贴心情 

    都差不多……

    ----------------------------------------------
    <!--签名开始 --> …… <!--签名结束-->

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/9/8 11:47:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XQuery/XLink/XPointer/ 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/2 15:21:24

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    78.125ms