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

    >> 精华版 是对 精华区 的 提升.
    精华版 将以结构化和分类的方式整理全站的精华文章。以便于广大站友更快地找到自己所需的信息
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 精华版 』 → [10100][转帖]技巧:使用 XML 和 XPointer   -------  faly 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 8711 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [10100][转帖]技巧:使用 XML 和 XPointer   -------  faly 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     yinyufa 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)|大一(猛啃高等数学)
      文章:123
      积分:455
      门派:XML.ORG.CN
      注册:2004/2/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yinyufa发送一个短消息 把yinyufa加入好友 查看yinyufa的个人资料 搜索yinyufa在『 精华版 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yinyufa的博客楼主
    发贴心情 [10100][转帖]技巧:使用 XML 和 XPointer   -------  faly

    http://bbs.xml.org.cn/dispbbs.asp?boardID=14&ID=6573&replyID=10845&skin=1

    技巧:使用 XML 和 XPointer  

    链接到文档的特定部分
    Brett McLaughlin (brett@newinstance.com)
    Enhydra 策略顾问,Lutris Technologies
    2001 年 7 月

    本技巧文章介绍 XPointer,并讨论如何将它与 XLink 一起使用,以引用另一篇文档的特定部分。
    在本技巧文章中,我希望以拙作使用 XML 和 XLink 技巧一文中演示的为基础。XLink 虽然有用,但只允许引用另一篇文档。但在很多时候,您都要引用另一篇文档的特定 部分。要做到这点很简单。这有些类似于在 HTML 中使用命名锚点,可以通过在 XLink 上使用 XPointer 来完成。这两个被设计成协同工作的规范十分自然地互为基础。本技巧文章将演示如何在 XML 中使用 XPointer 来引用文档的某一部分。

    要引用文档的一部分,首先要看一下将要链接到的目标文档。如果可以,请确保该文档使用 id 属性。这将使链接和定位更容易。“清单 1”显示了吉他工匠 Dana Bourgeois 制造的吉他清单,并包括每种类型的标识。

    注:为清晰起见,将 Bourgeois 吉他的 URL 由实际 URL http://www.bourgeoisguitars.com 改成较短的 URL http://bg.com。这使代码清单更易于阅读。如果要实际看到这篇文档,请将对 http://bg.com 的引用改回 http://www.bourgeoisguitars.com
    清单 1. Bourgeois 吉他清单

    <?xml version="1.0"?>

    <guitarTypes xmlns="http://bg.com">
    <type model="OM" ID="OM">
      <picture url="http://bg.com/images/vvOM.jpg" />
      <description>Small bodied orchestra model.</description>
    </type>
    <type model="D" ID="D">
      <picture
        url="http://bg.com/images/ricky%20skaggs%20model.jpg" />
      <description>
        Bluegrass powerhouse in a standard dreadnought shape.
      </description>
    </type>
    <type model="slopeD" ID="slopeD">
      <picture
        url="http://bg.com/images/slope%20d,%20custom%20version.jpg" />
      <description>
        Slope shouldered dreadnought, perfect for vocal accompaniment.
      </description>
    </type>
    </guitarTypes>



    对于本技巧文章,假设此文档位于 http://bg.com/guitars.xml。XPointer 不引用整篇文档 -那没有多大用处,它允许您链接到文档的特定部分。还记得 XLink 文章中的 xlink:href 属性吗?为那个属性提供的值是 XLink 的目标。但是要引用该页面的一部分,可以向这些 URL 中添加一个井号 (#) 和一个 XPointer 表达式。例如,表达式 xpointer(id("slopeD")) 引用文档中带有 ID "slopeD" 的元素。因此,可以使用 http://bg.com/guitars.xml#xpointer(id("slopeD")) 引用“清单 1”中所示的 XML,然后是那个文档中所描述的 Slope D 型号的吉他。很简单,是吗?下面为您显示我在 XLink 技巧文章中引入的描述吉他的 XML 文档修订版,它现在使用一些 XPointer 引用。

    清单 2. 在 XML 文档中使用 XPointer

    <?xml version="1.0"?>

    <guitars xmlns="http://www.newInstance.com/about/guitars"
             xmlns:xlink="http://www.w3.org/1999/xlink">
    <guitar luthier="Bourgeois"
      xlink:type="simple"
    xlink:href=
        "http://bg.com/guitars.xml#xpointer(id(&apos;OM&apos;))">
      <description xlink:type="simple"
                   xlink:href=
        "http://newInstance.com/guitar/bgOM/pics/bougOM_front_full.jpg"
                   xlink:actuate="onLoad" xlink:show="embed">
       This is a real beauty in a small body. Although this is an OM, I
       use it for flatpicking bluegrass as well as for producing some
       beautiful fingerstyle sounds.
      </description>
    </guitar>
    <guitar luthier="Bourgeois"
      xlink:type="simple"
    xlink:href=
        "http://bg.com/guitars.xml#xpointer(id(&apos;D&apos;))">
      <descripton xlink:type="simple"
                   xlink:href=
        "http://newInstance.com/guitar/bgD150/pics/bougd150_con_rim2.jpg"
                   xlink:actuate="onLoad" xlink:show="embed">
       Here's the holy grail in process. Dana Bourgeois is building this
       Brazilian rosewood and adirondack bluegrass monster right now.
       You'll know it's finished when you hear a run and your windows
       shatter!
      </description>
    </guitar>
    </guitars>



    现在,我的文档可以引用 Dana Bourgeois 保留的有关他的吉他的 XML 内容。即便他更改了此信息,我也无需担心;我的文档始终是最新的,因为它只链接到他更新过的信息。请注意,在上述代码中,必须使用 &amp; 而不是“和”符号(“&”)来转义 XPointer 表达式中的引号。这会使连接的 URL 相当长,而长 URL 可以导致讨厌的输入错误。对于我们来说幸运的是,在链接到带有 ID 标记的元素时,XPointer 允许使用方便的简写形式。除了使用 xpointer(id("D")) 形式,您还可以使用 ID 的值来定位。在这种情况下,那将是 "D"。这样,我就可以将“清单 2”中的文档简化成“清单 3”中所示的文档,该文档中的连接语法更清晰。

    清单 3. 使用 ID 链接的 XPointer 简写形式

    <?xml version="1.0"?>

    <guitars xmlns="http://www.newInstance.com/about/guitars"
             xmlns:xlink="http://www.w3.org/1999/xlink">
    <guitar luthier="Bourgeois"
              xlink:type="simple"
             xlink:href="http://bg.com/guitars.xml#OM">
      <descripton xlink:type="simple"
                   xlink:href="
        http://newInstance.com/guitar/bgOM/pics/bougOM_front_full.jpg"
                   xlink:actuate="onLoad" xlink:show="embed">
       This is a real beauty in a small body. Although this is an OM, I
       use    it for flatpicking bluegrass as well as for producing some
       beautiful fingerstyle sounds.
      </description>
    </guitar>
    <guitar luthier="Bourgeois"
              xlink:type="simple"
             xlink:href="http://bg.com/guitars.xml#D">
      <descripton xlink:type="simple"
                   xlink:href="
        http://newInstance.com/guitar/bgD150/pics/bougd150_con_rim2.jpg"
                   xlink:actuate="onLoad" xlink:show="embed">
       Here's the holy grail in process. Dana Bourgeois is building this
       Brazilian rosewood and adirondack bluegrass monster right now.
       You'll know it's finished when you hear a run and your windows
       shatter!
      </description>
    </guitar>
    </guitars>



    除了这种用简化的链接进行比较简单的列示之外,您还可以指向其它元素的 相关元素。举例来说,在清单 4 中,我将 description 元素改成指向 bourgeois.xml 文件中指定的图像。

    在“清单 4”中,可以看到第一步是在被引用文档中找到特定元素。那个元素用作附加到它之上的相关表达式的引用点。在本例中,指定了那个元素的子孙(由 descendant 关键字指定),在我们的示例中名为 "picture" 的那个元素。然后,该链接的最终目标是那个元素名为 "url" 的属性的值。我知道,这样说太费口舌,但如果循序渐进地做,就会相当简单。

    您应该注意到,我在清单 4 中没有使用上一节所谈论的 ID 链接的简写形式。那是因为使用那种 ID 链接形式只允许直接链接;不使用 ID 链接的较长形式,就无法进行任何进一步的链接(例如“清单 4”中的子代遍历引用)。

    有关 XPointer 提供的多种不同选项的更多信息,请查看联机的 XPointer 规范(请参阅参考资料)。有关那个看起来很奇怪的链接语法的完整表述,可以查看 XPath;也可以联机查看 XPath 规范(请参阅参考资料)。

    我知道,这只是一篇介绍,但现在,您可以告诉您的朋友和家人:关于 XPointer、XLink 和 XPath,您比他们多了解多少!试用它、阅读规范,并关注即将出现的对这些与 XML 有关的规范的浏览器支持。

    [此贴子已经被admin于2004-5-2 17:25:53编辑过]

       收藏   分享  
    顶(0)
      




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

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

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