跳转到内容

XSLT

0% developed
来自维基教科书,开放世界中的开放书籍

XSLT (可扩展样式表语言转换) 是一种用于转换XML 文档为其他 XML 文档(相同XML 架构或不同),或其他对象,例如用于网页的HTML,或用于其他用途的纯文本,或许多其他基于文本的格式(例如RTF 或任何SGML 文档)。

XSLT 或 XSL?
XSLT 文件的通常 3 个字母扩展名是.xsl,因此,它会导致与 .xls 混淆,.xls 是较旧的 Microsoft Excel 文件的后缀。
XSLT 或 XSL-FO?
XSLT 可用于将 XML 转换为XSL 格式化对象 (XSL-FO),然后可以将其转换为PDFPostScriptPNG。XSLT 和 XSL-FO 是截然不同的东西。

当转换“XML 到 XML”时,可能会有更多转换的链,当转换“XML 到对象”时,必须停止(对象是终端)。

有两个主要的 XSLT 标准组

  • XSLT-v1 (旧):于 1999 年 11 月作为W3C 建议发布。但是,截至 2014 年,XSLT v1.0 仍然被广泛使用,因为 2.0 和 3.0 在网络浏览器LAMP 等环境中不受原生支持。
  • XSLT-v2XSLT-v3 (更新):仅适用于“Java 世界”和一些专有框架,例如 Oracle 或 Altova 的产品。

维基教科书是关于 XSLT-v1,它拥有更广泛的用户群体。

XSLT-v1 解析器(例如libXml2)速度快且稳定。在MVC 上下文中,主要的 XSLT-v1 用途是作为MVC-查看器进行过滤或渲染,并以最小的处理成本来处理由MVC-建模器生成的 XML。对于“图灵完备”处理,为了避免迁移到 XSLT-v2 或 XSLT-v3,通常的解决方法是使用嵌入语言的处理,通过注册函数功能。示例:本维基教科书展示了在 PHP 环境中使用 XSLT 时如何使用注册函数

注册函数

[编辑 | 编辑源代码]

XPath-v1XSLT-v1 是基本标准,存在于几乎所有 XML 应用程序中,以及许多开放平台浏览器(Firefox、Chrome 等)、便携式系统(如 ANDROID)、桌面系统(如 UBUNTU 或 Windows)、数据库(例如 PostgreSQL、MySQL 等)以及其他系统中。

但 XPath-v1 和 XSLT-v1 在处理能力方面受到限制。一个好的选择是使用外部函数,这些函数可以在 XPath 或 XSLT 解析器中注册。此功能被称为注册函数

注册函数对于编写良好的 XPath-v1 和 XSLT-v1 应用程序至关重要,但很少得到很好的解释:要增强处理能力,您需要了解注册函数,其用途和确切的使用场景。

使用 XSLT 或 XPath 解析器的编程语言(例如 PHP)或代理(例如 网络浏览器)可以被调用回来以提供其内部函数(例如 浏览器的 Javascript 函数或 PHP 的函数)。

注册函数没有得到很好的文档记录。W3C 标准没有定义所有细节,也没有提供“注册函数教程”。

PHP/Python/Javascript/等手册本身没有简单的解释来真正捕捉到本质,并且在网络上发布的帖子似乎也缺少某些细节。

本维基教科书试图填补这一空白;并为此进行了一系列相关主题的广泛介绍。这里提出了两种主要方式来使用外部函数

  1. 自由使用:任何函数,内置函数或用户定义函数,最佳实践是使用特定的命名空间,例如 PHP 的“php”或 Python 的“py”。
  2. 受控使用:一种与语言无关的约定,使用本地标准库。最佳实践是使用通用命名空间,例如“fn”。因此,如果项目从 PHP 更改为 Python,例如,XSLT(或 XPath)保持相同的代码和命名空间。
[编辑 | 编辑源代码]

对于自由使用注册函数

对于受控注册函数(使用 FN 命名空间的约定)

华夏公益教科书