Linux中國

什麼是 XML?

XML 是一種分層的標記語言。它使用打開和關閉標籤來定義數據,它常用來存儲和交換數據,而且由於它極大的靈活性,不論是在 文檔 還是 圖像 中都用的非常多。

這裡是一個 XML 文檔的例子:

<xml>
  <os>
   <linux>
    <distribution>
      <name>Fedora</name>
      <release>8</release>
      <codename>Werewolf</codename>
    </distribution>

    <distribution>
      <name>Slackware</name>
      <release>12.1</release>
      <mascot>
        <official>Tux</official>
        <unofficial>Bob Dobbs</unofficial>
      </mascot>
    </distribution>
   </linux>
  </os>    
</xml>

閱讀這個示例 XML,你可能會發現這個 XML 的格式具有直觀的特性。 無論你是否熟悉這個文檔的主題,你都可能理解本文檔中的數據。 這部分原因是因為 XML 被認為是冗長的。 它使用了很多標籤,標籤可以有很長的描述性名稱,並且數據以分層的方式排序,這有助於解釋數據之間的關係。 你可能從這個示例中了解到 Fedora 發行版和 Slackware 發行版是兩個不同且不相關的 Linux 發行版,因為每個實例都「包含」在自己獨立的 <distribution> 標籤中。

XML 也非常靈活。 與 HTML 不同,它沒有預定義的標籤列表。 你可以自由創建你需要表示任何數據結構的標籤。

XML 的組成

數據的存在為了讀取,當計算機「讀取」數據時,該過程稱為 解析。 再次使用示例 XML 數據,以下是大多數 XML 解析器認為重要的術語。

  • 文檔:<xml> 標籤標記文檔的開始, </xml> 標籤標記文檔的結束。
  • 節點:<os>、<distribution>、<mascot> 這些都是節點,在解析術語中,節點是包含其他標籤的標籤。
  • 元素:像 <name>Fedora</name> 和 <official>Tux</official> 這些都是元素。從第一個<開始,到最後一個 > 結束是一個元素。
  • 內容:在兩個元素標籤之間的數據被稱之為內容,在第一個 <name> 標籤中,Fedora 字元串就是一個內容。

XML 模式

XML 文檔中的標籤和標籤繼承性稱為 模式。

一些模式是隨意組成的(例如,本文中的示例 XML 代碼純粹是即興創作的),而其他模式則由標準組織嚴格定義。 例如,可縮放矢量圖形(SVG)模式 由 W3C 定義,而 DocBook 模式 由 Norman Walsh 定義。

模式強制執行一致性。 最基本的模式通常也是最嚴格的。 在我的示例 XML 代碼中,將發行版名稱放在 <mascot> 節點中是沒有意義的,因為文檔的隱含模式清楚地表明 mascot 必須是發行版的「子」元素。

數據對象模型(DOM)

如果你必須不斷地描述標籤和位置(例如,「系統部分中的 Linux 部分中第二個發行版標籤的名稱標籤」),那麼談論 XML 會讓人感到困惑,因此解析器使用文檔對象模型(DOM)的概念來表示 XML 數據。 DOM 將 XML 數據放入一種「家譜」結構中,從根元素(在我的示例 XML 中,即 os 標記)開始並包括路徑上的每個標記。

![Document Object Model](/data/attachment/album/202107/28/082645tt4bnluz7t77b8p7.jpg "Document Object Model")

這種相同的 XML 數據結構可以表示為路徑,就像 Linux 系統中的文件或互聯網上網頁的位置一樣。 例如,<mascot> 標籤的路徑可以表示為 //os/linux/distribution/slackware/mascot。

兩個 <distribution> 標籤可以被表示為 //os/linux/distribution ,因為這裡有兩個發行版的節點,因此一個解析器可以直接將兩個節點的內容載入到一個數組中,可以進行查詢。

嚴格的 XML

XML 也以嚴格而著稱。 這意味著大多數應用程序被設計為在遇到 XML 錯誤時就會故意失敗。 這聽起來可能有問題,但這是開發人員最欣賞 XML 的事情之一,因為當應用程序試圖猜測如何解決錯誤時,可能會發生不可預測的事情。 例如,在 HTML 定義明確之前,大多數 Web 瀏覽器都包含「怪癖模式」,因此當人們試圖查看糟糕的 HTML 代碼時,Web 瀏覽器卻可以載入作者可能想要的內容。 結果非常難以預測,尤其是當一個瀏覽器的猜測與另一個瀏覽器不同時。

XML 通過在出現故意錯誤時失敗而不允許這樣做。 這讓作者可以修復錯誤,直到它們生成有效的 XML。 因為 XML 是良好定義的,所以有許多應用程序的驗證器插件以及像 xmllint 和 xmlstarlet 這樣的獨立命令來幫助你及早定位錯誤。

轉換 XML

因為 XML 通常用作數據交換,所以將 XML 轉換為其他數據格式或其他 XML 模式是很常見的。 經典示例包括 XSLTProc、xmlto 和 pandoc,但從技術上講,還有許多其他應用程序或者至少程序的一部分就是在轉換 XML。

事實上,LibreOffice 使用 XML 來布局其文字處理器和電子表格文檔,因此無論何時你導出或 從 LibreOffice 轉換文件,你都在轉換 XML。

開源 EPUB 格式的電子書 使用 XML,因此無論何時你 將文檔轉換為 EPUB 或從 EPUB 轉換,你都在轉換 XML。

Inkscape 是基於矢量的插圖應用程序,它將其文件保存在 SVG 中,這是一種專為圖形設計的 XML 模式。 任何時候你將 Inkscape 中的圖像導出為 PNG 文件時,你都在轉換 XML。

名單還可以一直繼續下去。 XML 是一種數據存儲格式,旨在確保你的數據,無論是畫布上的點和線、圖表上的節點,還是文檔中的文字,都可以輕鬆準確地提取、更新和轉換。

學習 XML

編寫 XML 很像編寫 HTML。 感謝 Jay Nick 的辛勤工作,在線提供免費且有趣的 XML 課程 可以教你如何使用 XML 創建圖形。

通常,探索 XML 所需的特殊工具很少。 由於 HTML 和 XML 之間的密切關係,你可以 使用 Web 瀏覽器查看 XML。 此外,QXmlEdit、NetBeans 和 Kate 等開源文本編輯器通過有用的提示、自動完成、語法驗證等,使鍵入和閱讀 XML 變得容易。

選擇 XML

XML 起初可能看起來有很多數據,但它與 HTML 並沒有太大的不同(實際上,HTML 已經 以 XHTML 的形式重新實現為 XML)。 XML 有一個獨特的好處,即構成其結構的標籤也恰好是元數據,提供有關其存儲內容的信息。 精心設計的 XML 模式包含並描述你的數據,使用戶能夠一目了然並快速解析它,並使開發人員能夠使用一些庫 快速解析。

via: https://opensource.com/article/21/7/what-xml

作者:Seth Kenlon 選題:lujun9972 譯者:amwps290 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理。

    More in:Linux中國

    Linux中國

    捐贈 Let&apos;s Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...