读XML in a Nutshell (7)

本篇包括Charpter 10 XLink。
XLink相比html的anchor来说要抽象许多了,而它能表示的内容也广泛很多,从某种角度来说xlink定义的是graph而不仅仅是link这么简单,通过locator跟resource定义点,通过arc定义边,从而构成任意的图。
要点如下:

1.XLink的namespace是http://www.w3.org/1999/xlink。XLink主要分为两种类型,simple跟extended。

2.Simple的xlink定义如下,可以使用xlink:show(可选值为new,replace,embed,other,none)跟xlink:actuate(可选值为onLoad,onRequest,other,none)这两个attribute来控制其行为,可以通过xlink:title跟xlink:role来描述其语义,其中title是一段文字,role是某个url。
<novel xlink:type = "simple" xlink:href = "ftp://archive.org/pub/etext/etext93/wizoz10.txt"/>

3.Extended的xlink通过定义点和边来描述一个图,所有的点和边的定义必须包含在含有xlink:type="extended"的element中,本地资源采用xlink:type="resource"定义,非本地资源采用xlink:type="locator"定义,边采用xlink:type="arc"定义。Resource跟locator都可以使用xlink:title跟xlink:role来描述其语义,同时使用xlink:label来为其命名,使其可以被arc引用。Arc用xlink:title跟xlink:arcrole来描述其语义,同时使用xlink:from跟xlink:to来描述其起始及终结的点,其中由于不同的resource或者locator可能有同个label,这个时候arc描述的是若干条边,而通过省略xlink:from或xlink:to可以选择所有的点,最后需要注意的是在同个extended的xlink下面,不同的arc所描述的边不能由重复(交集),否则视为错误。例子如下:
<author xlink:type="resource">L. Frank Baum</author>
<edition xlink:type="locator" xlink:href="urn:isbn:0688069444" xlink:title="William Morrow" xlink:role="http://www.williammorrow.com/" xlink:label="ISBN0688069444"/>
<purchase xlink:type="arc" xlink:from="ISBN0192839306" xlink:to="buy" xlink:arcrole="http://www.example.com/purchase_details.txt" />

4.在非本地资源间的边称为third-party links,从本地资源到非本地资源的边成为outbound links,从非本地资源到本地资源的边成为inbound links,如果一个xml document含有third-party links或者inbound links称为linkbase。

5.书中列举了两个在dtd中加入xlink支持的例子,如下:
<!ELEMENT novel (title, author, year)>
<!ATTLIST novel xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink' xlink:type (simple) #FIXED 'simple' xlink:href CDATA #REQUIRED>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT year (#PCDATA)>

<!ENTITY % simplelink "xlink:type (simple) #FIXED 'simple' xlink:href CDATA #REQUIRED xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink' xlink:role CDATA #IMPLIED xlink:title CDATA #IMPLIED xlink:actuate (onRequest | onLoad | other | none) 'onRequest' xlink:show (new | replace | embed | other | none) 'new'">
<!ATTLIST anthology %simplelink;>
<!ATTLIST novel %simplelink;>
<!ATTLIST nonfiction %simplelink;>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值