<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Vincent.Chan‘s Blog

    常用鏈接

    統計

    積分與排名

    網站

    最新評論

    技巧:使用 XML 和 XPointer::鏈接到文檔的特定部分

    級別: 初級

    Brett McLaughlin, Enhydra 策略顧問, Lutris Technologies

    2001 年 7 月 01 日

    本技巧文章介紹 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('OM'))">
    <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('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>

    現在,我的文檔可以引用 Dana Bourgeois 保留的有關他的吉他的 XML 內容。即便他更改了此信息,我也無需擔心;我的文檔始終是最新的,因為它只鏈接到他更新過的信息。請注意,在上述代碼中,必須使用 & 而不是“和”符號(“&”)來轉義 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:>
    <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:>
    <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 有關的規范的瀏覽器支持。





    回頁首


    參考資料





    回頁首


    關于作者

    Brett McLaughlin

    Brett McLaughlin( brett@newinstance.com)是 Lutris Technologies 的 Enhydra 策略顧問,專長于分布式系統體系結構方面。他是 Java and XML(O'Reilly)的作者。他參與了如 Java Servlet、Enterprise JavaBean 技術、XML 和商家對商家應用程序等技術的研究。他與 Jason Hunter 一起發起了 JDOM 項目,該項目為從 Java 應用程序中操縱 XML 提供了一個簡單的 API。他還是 Apache Cocoon 項目和 EJBoss EJB 服務器的活躍開發人員以及 Apache Turbine 項目的共同創始人之一。

    posted on 2006-03-21 23:31 Vincent.Chen 閱讀(282) 評論(0)  編輯  收藏 所屬分類: XML

    主站蜘蛛池模板: 亚洲永久永久永久永久永久精品| 亚洲jjzzjjzz在线观看| 午夜网站在线观看免费完整高清观看 | 亚洲国产成人VA在线观看| 国产99久久久国产精免费 | 亚洲国产美女福利直播秀一区二区| 最近中文字幕无免费视频| 色噜噜狠狠色综合免费视频| 亚洲乱码中文字幕久久孕妇黑人| 在线免费观看亚洲| 精品亚洲成a人在线观看| 亚洲va久久久噜噜噜久久天堂| 成人啪精品视频免费网站| 巨胸喷奶水视频www免费视频| 亚洲人成影院在线高清| 中文字幕中韩乱码亚洲大片| 亚洲国产精品免费在线观看| 日韩久久无码免费毛片软件| 亚洲高清无在码在线电影不卡| 亚洲AV伊人久久青青草原| 国产又黄又爽又猛免费app| 国产免费久久精品丫丫| 亚洲色在线无码国产精品不卡| 亚洲AV永久无码精品水牛影视| 国产精品四虎在线观看免费| 最近中文字幕免费完整| 中文字幕无码免费久久9一区9| 中文字幕无码精品亚洲资源网久久 | 国产精品另类激情久久久免费| 你好老叔电影观看免费| 亚洲精品无码av片| 亚洲精品第一国产综合精品| 亚洲一级片免费看| 女人18毛片特级一级免费视频| 99视频有精品视频免费观看| 国产精品免费久久| 国产亚洲高清在线精品不卡| 亚洲国产最大av| 亚洲欧洲日本精品| 久久精品亚洲日本佐佐木明希| 亚洲美女高清一区二区三区|