简体中文
  • XML
  • HTML
  • SAML
  • 数据传输

什么是 XML?

XML 是一种灵活的标记语言,用于结构化和传输数据。它具有可自定义的标签、层次结构和模式定义。与 HTML 不同,XML 更侧重于数据表示而非显示。它广泛应用于各种应用程序中,包括像 Logto 的 SAML 实现这样的 SSO 配置。

Darcy Ye
Darcy Ye
Developer

可扩展标记语言(XML)使用标签来指示数据文件中的文本如何结构化、存储和传输。XML 被设计成可以被人类和机器读取的工具,使其成为一个强大且高度可定制的标记工具。

XML 由万维网联盟(W3C)在1996年创建。W3C 的目标是创建一种语言,可以帮助定义文档类型并提供创建自定义标签的能力。这种标记语言类型允许在共享页面上的数据之前定义其标记方式,只要两个系统使用相同的 XML 语言(以及它们都可以解释的标签),这两个系统就可以"理解"XML 文件格式。当 XML 被正确部署时,这确保了任何数据文件可以存储、传输,然后在每次访问时再现完全相同的数据和结构。

XML 内容示例

XML 数据由数字文件中的文本组成。类似于 HTML,你通过插入标签来创建 XML 文件的必要"代码",以指示文本应如何解释。例如:

这个例子展示了三个用户。XML 内容包括姓名、用户名、电子邮件和用户级别。

这创建了一个可以在身份提供商和资源提供商之间共享和读取的 XML 文档。

重要的是,上述示例展示了 XML 文档的层次结构。例如:

  • 第一行的内容 <?xml version="1.0" encoding="UTF-8"?> 是 XML 声明,指定版本和编码方式
  • 在一个 XML 文档中,必须有一个根元素,在这个例子中是 <users>
  • 所有包含在根元素中的其他元素被称为"子元素"
  • 在以上例子中,有三个子元素,用 <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 是一种标记语言,用于存储、显示和传输数据

除此之外,它们还有一些其他区别:

  1. 因为 HTML 是为浏览器渲染页面内容,其标签类型是预定义的,而 XML 标签可以根据实际情况自定义
  2. HTML 通常是静态的,因为它用于显示内容;XML 是动态的,因为它用于传输数据
  3. HTML 不支持命名空间,而 XML 可以使用命名空间来区分可能同名但上下文不同的标签,以避免混淆

在这个例子中:

  • tech:title 使用 <http://www.example.com/tech> 作为命名空间,表明该 <title> 元素属于 tech 命名空间
  • bio:author 使用 <http://www.example.com/bio> 作为命名空间,表明该 <author> 元素属于 bio 命名空间

XML 在 Logto 中如何使用?

Logto 支持 SSO 的 SAML 协议。在配置 SSO 时,身份提供者提供一个 XML 格式的配置文件,其中包括重要的配置,如证书和单点登录 URL。

在配置 SAML SSO 时,Logto 允许直接上传从身份提供者获取的 XML 配置文件,省去了手动填写每个配置项的需求。