什么是 XML?
XML 是一种灵活的标记语言,用于结构化和传输数据。它具有可自定义的标签、层次结构和模式定义。与 HTML 不同,XML 更侧重于数据表示而非显示。它广泛应用于各种应用程序中,包括像 Logto 的 SAML 实现这样的 SSO 配置。
可扩展标记语言(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 是一种标记语言,用于存储、显示和传输数据
除此之外,它们还有一些其他区别:
- 因为 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 支持 SSO 的 SAML 协议。在配置 SSO 时,身份提供者提供一个 XML 格式的配置文件,其中包括重要的配置,如证书和单点登录 URL。
在配置 SAML SSO 时,Logto 允许直接上传从身份提供者获取的 XML 配置文件,省去了手动填写每个配置项的需求。