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 是良好定義的,所以有許多應用程序的驗證器插件以及像 xmllintxmlstarlet 這樣的獨立命令來幫助你及早定位錯誤。

轉換 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。 此外,QXmlEditNetBeansKate 等開源文本編輯器通過有用的提示、自動完成、語法驗證等,使鍵入和閱讀 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中國