什麼是XML?
XML 是一種多用途的標記語言,用於結構化和傳輸數據。它具有可自定義的標籤、層次結構以及模式定義。與 HTML 不同,XML 著重於數據表示而非顯示。它廣泛應用於各種應用程序中,包括像 Logto 的 SAML 實現這樣的 SSO 配置。
擴展標記語言(XML)使用標籤來指示數據文件中的文本應如何結構化、存儲和傳輸。XML 的設計使其可被人和機器閱讀,使之成為一種功能強大且高度可定制的標記工具。
XML 由萬維網聯盟(W3C)於1996年創建。W3C 的目標是創建一種語言,可以幫助定義文檔類型並提供創建自定義標籤的能力。由此產生的標記語言類型允許定義頁面上的數據應如何標記,然後將其作為 XML 文件與另一系統共享。只要兩個系統使用相同的 XML 語言(使用它們都能解釋的標籤),這兩個系統就能「理解」XML 文件格式。當 XML 被適當部署時,這保證任何數據文件都能夠存儲、傳輸,然後使用,每次訪問時再現完全相同的數據和結構。
XML內容範例
XML 數據由數字文件中的文本組成。類似於 HTML,你可以透過插入標籤來創建 XML 文件所需的「代碼」,以指示文本應如何被解釋。舉例來說:
此例顯示了三個用戶。XML 內容包括名字、用戶名、電子郵件和用戶等級。
這會創建一個可以在身份提供者和資源提供者之間共享和讀取的 XML 文檔。
重要的是,上述例子展示了 XML 文檔的層次性。譬如:
- 第一行的內容
<?xml version="1.0" encoding="UTF-8"?>
是 XML 聲明,指定了版本和編碼 - 在 XML 文檔中,必須有一個根元素,在此例中是
<users>
- 所有包含在根元素內的元素被稱為「子元素」
- 在上述例子中,有 3 個子元素,標示為
<user>
標籤 - 在
<user>
子元素內,還有其他若干子元素,例如<name>
、<username>
、<email>
和<level>
- 在
<user>
標籤上,還有一個id
,被稱為 XML 屬性。一個元素不能包含多個同名屬性
使用的標籤顯示了每種類型數據是什麼,普通文本作為數據本身。還要注意內容是如何縮排的。這並不是為了幫助系統處理 XML 文件,而是為了幫助人們更容易瀏覽 XML 文件及其層次順序,以發現和解決任何錯誤或遺漏。
什麼是XML方案?
方案作為 XML 文檔的「定義」。這意味著它描述了 XML 文件結構的關鍵規則和約束以及對內容和數據類型的控制——控制它們在文檔中的相互作用。這確保了 XML 的數據完整性始終受到保護,即便在不同應用程序甚至系統之間處理也是如此。
兩種主要的方案語言是文檔型定義 (DTD) 和 XML 方案定義 (XSD)。由於其豐富的功能集、強大的數據類型能力等,XSD 是 XML 文檔中使用最多的語言。
什麼是XML語法?
如果像 XSD 的 XML 方案全是關於確保 XML 文檔有效性的詳細規範,那麼 XML 語法提供了一組規則來控制和管理 XML 文件的總體結構。例如,XML 語法可以涵蓋文本內容,例如自閉元素(不需要附加內容的單個信息)或 XML 聲明(一開始描述關鍵信息,如字符編碼的文檔使用),以及文件使用的 XML 版本。
XML 與 HTML
如果你熟悉 HTML,那麼 XML 文件布署標記的方式會看起 來非常熟悉——但這兩種標記語言有一個關鍵區別——它們的用途和目的不同:
- HTML 是一種標記語言,用於幫助瀏覽器理解如何在螢幕上顯示內容
- XML 是一種標記語言,用於存儲、顯示和傳輸數據
除此之外,它們還有其他一些不同之處:
- 因為 HTML 被用來渲染給瀏覽器的頁面內容,其標籤類型是預定義的,而 XML 標籤可以根據實際情況自定義
- HTML 通常是靜態的,因為它用於顯示內容;XML 是動態的,因為它用於傳輸數據
- HTML 不支持命名空間,而 XML 可以使用命名空間來區分可能有相同名稱但不同上下文的標籤,以避免混淆
在此例中:
tech:title
使用<http://www.example.com/tech>
作為命名空間,表明這個<title>
元素屬於tech
命名空間bio:author
使用<http://www.example.com/bio>
作為命名空間,表明這個<author>
元素屬於bio
命名空間
XML 在 Logto 中如何使用?
Logto 支持 SAML 協議用於 SSO。在配置 SSO 時,身份提供者提供一個 XML 格式的配置文件,其中包含重要配置,如證書和單點登錄 URL。
在配置 SAML SSO 時,Logto 允許直接上傳從身份提供者獲得的 XML 配置文件,無需手動填寫每個配置項。