<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: XLink 和數據::使用 XLink 簡化數據表示

    級別: 初級

    Kevin Williams, 首席 XML 設計師, Equient(Veridian 的一個部門)

    2001 年 7 月 01 日

    本專欄討論了表示數據時如何使用 XLink 指針使 XML 文檔變得更緊湊、更靈活。樣本代碼顯示了帶有或不帶 XLink 指針的發票示例,加上一個將 XLinks 用于可按 URL 尋址的數據庫的示例。

    近來,W3C 將一個稱為 XLink 的規范升級到“推薦”狀態。在本專欄中,將研究 XLink 以及如何使用它來簡化數據的表示和傳輸。

    究竟什么是 XLink 呢?

    引用 W3C XLink 規范:“XML 鏈接語言(XLink)... 允許在 XML 文檔中插入元素以創建并描述資源之間的鏈接。”然后,規范宣稱使用 XLink 定義的鏈接類似于 HTML 超級鏈接,從而導致許多程序員得出這就是該規范的唯一目的結論。但是,還有另一種方法可以使用 XLink 來獲取巨大利益:顯示數據資源之間的關系。





    回頁首


    操作中的 XLink

    設想一個典型的訂單跟蹤應用程序,假定對于大型制造公司。描述訂單的 XML 文檔通常將包含下達訂單的顧客信息、訂單狀態和訂單上帶有數量和價格的獨立行項。文檔用戶可能想以不同的方法使用它。在財務部,請求訂單數據的人員可能只 對需要讓顧客付款的總價感興趣 - 而發票上獨立行項的詳細信息(除數量和價格外)卻是不相關的。相反,顧客要求訂單時(也許為了在線查看),他們可能想查看更多信息,例如,行項上一個部件 的可讀名稱。將帶有全部詳細信息的整個文檔傳送給每個顧客并不一定會有意義:理想的做法是僅傳送訂單的基本框架(對于僅對基本內容感興趣的顧客),它帶有 指向更詳細信息的指針。XLink 提供了完成該任務的出色方法。

    完整的訂單文檔有些類似于“清單 1”。


    清單 1. 完整的發票文檔(帶有嵌入式的顧客和部件信息)
    												<?xml version="1.0"?>
    <order>
    <orderDate>7/23/2001</orderDate>
    <shipDate>7/26/2001</shipDate>
    <customer>
    <customerID>18273</customerID>
    <customerName>Fred Q. Customer</customerName>
    <billingAddress>
    <address1>100 Main St.</address1>
    <city>Anywhere</city>
    <state>AZ</state>
    <zip>12345</zip>
    </billingAddress>
    <shippingAddress>
    <address1>800 Corporate Dr.</address1>
    <address2>Suite 314</address2>
    <city>Anywhere</city>
    <state>AZ</state>
    <zip>12345</zip>
    </shippingAddress>
    </customer>
    <lineItem>
    <part>
    <partID>W-127</partID>
    <partName>Widget</partName>
    <partSize>2-inch</partSize>
    <partColor>Blue</partColor>
    </part>
    <quantity>17</quantity>
    <unitPrice>0.20</unitPrice>
    </lineItem>
    <lineItem>
    <part>
    <partID>S-387</partID>
    <partName>Sprocket</partName>
    <partSize>1-inch</partSize>
    <partColor>Red</partColor>
    </part>
    <quantity>31</quantity>
    <unitPrice>0.40</unitPrice>
    </lineItem>
    </order>

    不僅“清單 1”中的完整發票包含顧客可能不需要(或正好要廢棄)的信息,而且,如果使用本地的 XML 存儲數據,該文檔還會產生問題:如果在每個文檔中嵌入每個部件的詳細信息,重復的部件信息會浪費大量磁盤空間。但是,假設此時正在從關系數據庫中按需要取 出信息。存儲這種信息類型的數據庫的典型設計將包含三個主控表:定義制造商所有顧客的“顧客”表、描述制造商銷售的所有部件的“部件”表和與這兩個表相關 的“訂單”表,它顯示哪一個顧客訂購了哪一種部件、訂購時間和數量。這提示我們如何將該文檔分成幾個可控制的部分。

    因此,“清單 2”使用 XLink 結構引用正好包含 customerpart 元素的文檔來替換這些元素。結果文檔將有些類似于“清單 2、3、4 和 5”。


    清單 2. 帶有 XLink 簡單鏈接的已修改發票文檔
    												<?xml version="1.0"?>
    <order xmlns:xlink="http://www.w3.org/1999/xlink">
    <orderDate>7/23/2001</orderDate>
    <shipDate>7/26/2001</shipDate>
    <customer xlink:href="customers/18273.xml">18273</part>
    <lineItem>
    <part xlink:href="parts/W-127.xml">W-127</part>
    <quantity>17</quantity>
    <unitPrice>0.20</unitPrice>
    </lineItem>
    <lineItem>
    <part xlink:href="parts/S-387.xml">S-387</part>
    <quantity>31</quantity>
    <unitPrice>0.40</unitPrice>
    </lineItem>
    </order>



    清單 3. customers/18273.xml
    												<?xml version="1.0"?>
    <customer>
    <customerID<18273</customerID>
    <customerName>Fred Q. Customer</customerName>
    <billingAddress>
    <address1>100 Main St.</address1>
    <city>Anywhere</city>
    <state>AZ</state>
    <zip>12345</zip>
    </billingAddress>
    <shippingAddress>
    <address1>800 Corporate Dr.</address1>
    <address2>Suite 314</address2>
    <city>Anywhere</city>
    <state>AZ</state>
    <zip>12345</zip>
    </shippingAddress>
    </customer>



    清單 4. parts/W-127.xml
    												<?xml version="1.0"?>
    <part>
    <partID>W-127</partID>
    <partName>Widget</partName>
    <partSize>2-inch</partSize>
    <partColor>Blue</partColor>
    </part>



    清單 5. parts/S-387.xml
    												<?xml version="1.0"?>
    <part>
    <partID>S-387</partID>
    <partName>Sprocket</partName>
    <partSize>1-inch</partSize>
    <partColor>Red</partColor>
    </part>

    您大概可以看出用該方法構造信息結構的明顯優勢。如果財務部僅僅想給顧客 18273 發送帳單(該標識在財務軟件中),則只需要檢索訂單文檔以獲取所需信息。可以在一個比嵌入了所有額外信息的原始文檔小得多的文檔中找到該信息。可以設置應 用程序,這樣在線檢索該發票的顧客會看到自動顯示的信息(在初始呈遞時,呈遞該頁面的樣式表單可以獲取顧客和部件的詳細信息),或者詳細信息作為超級鏈接 出現,以供顧客遍歷。帶有超級鏈接的結構化文檔更加靈活和強大;顧客只檢索到相關部分。

    您可能想知道這個策略對系統有什么好處。畢竟,可能會在需要時使用在處理過程中生成的 XML 文檔在關系數據庫中存儲數據,而不是在本地 XML 數據庫中存儲。可以用幾種方式利用該方法。如果顧客信息和部件信息的變更率相對較低,則創建或更改顧客和部件時,可以生成 XML 文檔來表示它們,這樣就確保了該數據的請求不需要代價巨大的附加數據庫調用。它還允許創建顧客和部件目錄,而完全不需要訪問關系數據庫。如果正在使用可按 URL 尋址的關系數據庫 - 大多數關系型數據庫已經或者將很快提供該功能 - 可以創建一個允許在處理過程中檢取信息的訪問器(例如,一個存儲過程),如“ 清單 6”中的假想示例。





    回頁首


    結束語

    本專欄演示了如何使用 XLink 的基本功能來簡化文檔結構和降低網絡傳輸的開銷。它僅討論使用簡單鏈接的方法;XLink 還提供了擴展的鏈接功能,可以用它將許多資源關聯在一起(例如,可以創建一個 XLink 鏈接庫,在顧客與訂單之間建立關系)。隨著 XML 和相關幫助器技術的不斷成熟,在確定如何實現信息系統時,程序員將擁有更大的靈活性,允許協調解決方案以最大限度地滿足顧客的需要。





    回頁首


    參考資料





    回頁首


    關于作者


    Kevin Williams 是 Equient 的首席 XML 設計師,Equient 是 Veridian 專門從事信息管理系統的 XML 設計的一個部門。他還與人合著了幾本關于 XML 的書籍,由 Wrox Press 出版。可通過 kevin@realworldxml.com 與他聯系以獲取說明。在他的網站 www.realworldxml.com 上可以找到任意的 XML 想法、技巧、竅門和個人的激昂演說。您知道,是給孩子們看的!

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

    主站蜘蛛池模板: 亚洲自偷自偷偷色无码中文| 国产乱子伦精品免费女| 国产精品亚洲成在人线| 国产99久久久久久免费看| 四虎影视精品永久免费| 亚洲AV无码国产精品永久一区| 卡一卡二卡三在线入口免费| 亚洲AV成人精品日韩一区 | 免费无遮挡无码永久视频| 久久亚洲精品中文字幕三区| 久久99精品视免费看| 亚洲网红精品大秀在线观看| 日本人的色道免费网站| 99999久久久久久亚洲| 免费视频淫片aa毛片| 色妞www精品视频免费看| 2048亚洲精品国产| 九九精品成人免费国产片| 久久亚洲私人国产精品vA| 在线观看日本免费a∨视频| 亚洲av成人一区二区三区在线播放| 国产免费av片在线播放| 韩国免费A级毛片久久| 亚洲欧洲国产日韩精品| 免费无码肉片在线观看| 香蕉97碰碰视频免费| 亚洲春色在线视频| 无码专区永久免费AV网站| 日韩欧美亚洲中文乱码| 国产亚洲精品自在久久| 国产四虎免费精品视频| 美女视频黄a视频全免费网站一区| 在线观看午夜亚洲一区| 国产又大又粗又长免费视频| 四虎影视在线看免费观看| 亚洲国产精品久久久久网站| 免费黄色小视频网站| 国产在线观看免费视频软件| 亚洲中字慕日产2021| 亚洲裸男gv网站| 114级毛片免费观看|