📄 0702-0100.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0702-0100 -->
<HTML><HEAD><TITLE>XML中国论坛 - 初学进阶 - 7.2.1 简单XML Link</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TABLE {
FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"
}
.pt9 {
FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"
}
.pt10 {
FONT-WEIGHT: 700; FONT-SIZE: 10pt; LINE-HEIGHT: 18pt; FONT-FAMILY: "宋体"
}
.TempOutline {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; COLOR: #666666; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.TempOutline1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; COLOR: #666666; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline11 {
FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage0 {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage11 {
FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage111 {
FONT-SIZE: 9pt; MARGIN-LEFT: 51pt; TEXT-INDENT: -64pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
</STYLE>
<META content="Microsoft FrontPage 5.0" name=GENERATOR></HEAD>
<BODY vLink=#000000 aLink=#000000 link=#000000 leftMargin=0 topMargin=0
onload=""><!-- 以下为主体内容 -->
<div align="center">
<center>
<TABLE width="100%" border=0 style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<TBODY>
<TR vAlign=top>
<TD width=47 rowSpan=2></TD>
<TD vAlign=center width="494">
<p align="center"><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD width=45 rowSpan=2></TD>
</TR>
<TR vAlign=top>
<TD width="494" ><!-- 正文内容 -->
<DIV class=pt10><B>7.2.1 简单XML Link</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9>
<P> 简单XML链接与HTML链接非常相似,它在两个资源之间建立关联。这两个资源分别是文件中的链接元素和XLink全局属性href所指向的资源,其中链接元素为本地资源或起始资源,href所指向的资源为远程资源或目标资源。可以用简单XML链接实现HTML链接,下面示例中使用XLink实现HTML中的链接标记<A>。</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><!ELEMENT A(#PCDATA)><BR><!ATTLIST A
<BR> xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
<BR> xlink:type (simple) #FIXED
"simple"<BR> xlink:href CDATA
#REQUIRED<BR> xlink:role CDATA
#IMPLIED<BR> xlink:title CDATA
#IMPLIED<BR> xlink:show (embed | replace |
new) "replace"<BR> xlink:actuate (onLoad |
onRequest) "onRequest"<BR>></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>可以利用上面的DTD声明,我们可以定义元素A的实例:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><A xlink:href =
"http://www.xlinksample.com/simplelink.xml"><BR>This is a simple
xlink!<BR></A></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>对照HTML中的链接的例子:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><A href =
"http://www.xlinksample.com/simplelink.xml"><BR>This is a simple
xlink!<BR></A></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>可以发现,两种写法已经非常接近,除了XML中具有xlink前缀表示XLink命名空间,其他都完全一样(这里我们假设命名空间已经在文件首部声明)。同样,它们在浏览器上的表现也应该是一样的。在上例中所链接的资源是元素A和"http://www.xlinksample.com/simplelink.xml"所指向的资源,下面是它的示意图。</P>
<P align=center><IMG height=283
src="image/TU000000-0702-0100-01.gif" width=283></P>
<P>同样,我们可以使用XLink实现HTML中的<IMG>标记:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><!ELEMENT IMG EMPTY><BR><!ATTLIST IMG
<BR> xmlns:xlink CDATA #FIXED
"http://www.w3.org/1999/xlink"<BR> xlink:type (simple) #FIXED
"simple"<BR> xlink:href CDATA #REQUIRED<BR> xlink:show
CDATA #FIXED "onLoad"<BR> xlink:actuate CDATA #FIXED
"embed"<BR> ALT CDATA #IMPLIED<BR> ALIGN CDATA
#IMPLIED<BR> HEIGHT CDATA #IMPLIED<BR> WIDTH CDATA
#IMPLIED<BR> BORDER CDATA
#IMPLIED<BR>></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>当然,HTML中<IMG>标记的属性比上面列出的多一些,但是如果忽略那些不常使用的属性,使用上面的DTD声明定义实例,就可以在XML文件中嵌入图象资源。</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><IMG xlink:ref = "imgEmbed.gif"
/></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>下面,我们就来分别介绍一下简单链接中所使用到的属性。
<OL>
<LI><STRONG>类型属性</STRONG> </LI></OL>
<P>类型(xlink:type)属性决定了链接或资源的类型,XLink处理程序根据xlink:type的值决定如何处理链接元素,但是处理程序的动作并不仅仅取决于这一个属性,它还将取决于下面将要提到的行为属性。对XLink而言,xlink:type属性可以在元素的开始标记中定义,也可以在DTD中定义缺省值,但必须使XML分析器分析到链接元素时能够得到属性xlink:type的值。xlink:type属性的取值可以是simple、extended、locator、arc、resource、title和none其中之一。</P>
<P>对简单XML链接,type属性固定取值为"simple",前面定义的A标记和IMG标记都是简单XML链接的例子。</P>
<P>如果一个元素的xlink:type属性取值为none,那么该元素就不是一个链接元素,不具有链接意义。如果该元素还具有一些与链接相关的其他属性或子元素,这些属性和内容也将失去其链接意义。例如下例中的NOLINK元素中包括的子元素LINK,虽然指定了xlink:type为simple,但仍然不具有链接意义。</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><NOLINK xmlns:xlink =
"http://www.w3.org/1999/xlink"<BR>
xlink:type="none"><BR> <LINK xlink:type = "simple"
<BR> xlink:href =
"http://www.xlinksample.com/students.xml"<BR>
xlink:role = "studentlist"
<BR> xlink:title =
"Student List"<BR>
xlink:show = "replace"
<BR> xlink:actuate =
"onRequest"><BR> List of Students<BR>
</LINK><BR></NOLINK></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>一般情况下,可以将简单XML链接元素的DTD定义如下:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><!ELEMENT LINK (#PCDATA)><BR><!ATTLIST
LINK<BR> xmlns:xlink CDATA #FIXED
"http://www.w3.org/1999/xlink"<BR> xlink:type (simple)
#FIXED "simple"<BR> xlink:href CDATA #REQUIRED<BR>
……<BR>></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>但在某些情况下,元素LINK仅仅在文件某些地方作为链接元素出现,而在其他地方作为普通元素出现。此时,可以将DTD定义为:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><!ELEMENT LINK (#PCDATA)><BR><!ATTLIST
LINK<BR> xmlns:xlink CDATA #FIXED
"http://www.w3.org/1999/xlink"<BR> xlink:type (none |
simple) #REQUIRED<BR> xlink:href CDATA #REQUIRED<BR>
……<BR>></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>在利用该DTD创建XML文件时,只要在需要链接元素的地方,将xlink:type属性取值为"simple",在其他地方则取值为"none"。如果需要将链接元素改为非链接元素,只要简单地将xlink:type属性的值由"simple"改为"none"即可,反之亦然。
<OL start=2>
<LI><STRONG>寻址属性</STRONG> </LI></OL>
<P>XML链接元素的寻址属性是指xlink命名空间的href属性,它指定了链接的目标资源。该属性的取值是一个URI,它可以是一个文件或文件中的某一特定位置。XML链接的xlink:href属性与HTML链接的href属性基本相同,如:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><LINK xmlns:xlink =
"http://www.w3.org/1999/xlink"<BR>
xlink:type = "simple"<BR>
xlink:href =
"http://www.xlinksample.com/students.xml"><BR></LINK><BR><LINK
xmlns:xlink =
"http://www.w3.org/1999/xlink"<BR> xlink:type
= "simple"<BR> xlink:href =
"students.xml"><BR></LINK><BR><LINK xmlns:xlink =
"http://www.w3.org/1999/xlink"<BR>
xlink:type = "simple"<BR>
xlink:href =
"http://www.xlinksample.com/students.xml#zhang"><BR></LINK></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>在上面的三个例子中,第一个例子指定了目标资源的绝对位置,第二个例子指定了目标资源的相对位置,第三个例子指定了被链接文件中的某个具有ID属性,且取值为"zhang"的元素。对于第二种情况,XLink处理程序必须能够接收xml:base属性,指定资源相对于哪个位置,然后将xml:base与xlink:href合并得到资源的具体位置。而对于第三种情况中的文件内部定位,则由Xpointer语言定义。关于XPointer和XML
Base的详细介绍,请参照本章中的XPointer和XML Base小节。</P>
<P>另外,简单XML链接的xlink:href属性可以不出现。此时这种链接薹ㄏ笃胀ǖ牧唇右谎
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -