为啥 XSLT 文档被认为是“样式表”?

Posted

技术标签:

【中文标题】为啥 XSLT 文档被认为是“样式表”?【英文标题】:Why are XSLT documents considered 'stylesheets'?为什么 XSLT 文档被认为是“样式表”? 【发布时间】:2020-07-09 22:27:37 【问题描述】:

从使用过 html/CSS 的角度来看,我从概念上理解 HTML 是标记,并且 CSS 包含用于设置标记样式的规则 - 因此是“样式表”。

出于兴趣,我决定研究一下 XSLT 是什么,因为我开始越来越多地使用 XML。我了解 XML 文档中的 XLS 命名空间被定义为用于转换其他 XML 文档的编程语言。即 XSLT 是一种以 XML 格式编写的编程语言。 (如果情况不是,请告诉我!)

为什么这些“脚本”被视为样式表?即名称 - XSLT - Extensible stylesheet 语言转换从何而来?

从使用 CSS 样式表的人的角度来看,我发现 XSLT 文档的名称令人困惑,据我所知,XSLT 文档与视觉布局(样式)无关,而与转换信息表示有关的一切都被命名为以类似的方式。

【问题讨论】:

【参考方案1】:

XSL 项目最初的目标是开发一种语言,用于设计 XML 文档的样式,以便在屏幕上或打印中再现。随着设计的发展,人们发现它可以有效地分为两部分:首先是转换(变成 XSLT),然后是格式化(变成 XSL-FO)。转换部分演变成一种计算完整的编程语言,尽管具有专门用于处理 XML 的数据模型。

XSLT 1.0 规范的摘要指出:

  "XSLT is also designed to be used independently of XSL. However, XSLT
  is not intended as a completely general-purpose XML
  transformation language. Rather it is designed primarily for the kinds
  of transformations that are needed when XSLT is used as part of XSL."

您可以相当肯定,如果工作组内部没有一些争议,他们不会费心这么说:我猜有人说“这正在变成一种通用编程语言,这不是什么我们被授权生产”,而其他人则说“不,它只做格式化用例所需的那些事情;如果它对其他事情有用,那是一个意想不到的好处”。从名称中去掉“S”表示背离了该组织的章程。

【讨论】:

转换和格式化阶段已经在 DSSSL (en.wikipedia.org/wiki/…) 中。有多种 SGML 转换语言。只有 OmniMark 获得了很大的吸引力,但当时价格昂贵。用于 SGML 转换的 Jade 扩展 (jclark.com/jade/transform.htm) 是免费的,并且在 XML 之前得到了相当多的使用。 Microsoft 通过发布 W3C 规范之前的仅转换组件 (web.archive.org/web/20000815213130/http://www.netcrucible.com/…) 为 XSLT 创造了动力。【参考方案2】:

请参阅https://www.w3.org/TR/xsl11/,“可扩展样式表语言”之间的区别

本规范定义了可扩展的特性和语法 样式表语言 (XSL),一种用于表达样式表的语言。它 由两部分组成:

一种用于转换 XML 文档的语言 (XSLT),以及

用于指定格式语义的 XML 词汇表。

XSL 样式表指定 XML 类的表示 通过描述类的实例如何转换来记录 到使用格式化词汇表的 XML 文档中。

因此,在 XSLT (1) 的开发过程中,重点是同时使用转换语言 (XSLT) 和“用于指定格式化语义的 XML 词汇表”。

但后来,正如https://www.w3.org/Style/XSL/WhatIsXSL.html 所说:“XSLT。最初旨在执行复杂的样式操作,例如生成目录和索引,现在它被用作通用 XML 处理语言。因此 XSLT 被广泛使用用于 XSL 以外的其他用途,例如从 XML 数据生成 HTML 网页。”。

【讨论】:

谢谢 - 这是否意味着我看到的大多数示例更适合命名为xlt? (即样式方面不再使用太多) 我不建议为成熟的语言使用新的或不同的名称。取决于你问谁,肯定会有用户使用 XSLT 进行 XML->XSL-FO 转换以最终获得 PDF,这部分在使用 DocBook 或 DITA 发布时非常活跃。 谢谢 - 这很有帮助。没有体验过它的使用方式,很容易不明白它的用处和用途【参考方案3】:

因为 XSLT styling 被认为是从 XML 文档中表示的语义内容到目标媒体中的表现元素。

将 CSS 和 HTML 视为此类目标媒体之一。 PDF(通过 XSL-FO)将是 XML 可以转换为支持样式的介质的另一个示例。

将 XSLT 视为一种强大的转换语言,最初是为了设计 XML 样式。

因此,XSLT 样式表

【讨论】:

以上是关于为啥 XSLT 文档被认为是“样式表”?的主要内容,如果未能解决你的问题,请参考以下文章

可以将 XSLT 样式表添加到序列化的 XML 文档吗?

通过 .NET 将参数传递给 XSLT 样式表

当我将 XSLT 样式表应用到 XML 文件时,啥也没有出现

XSLT

XSLT:将样式表包含在主样式表中

XSLT学习通过JavaScript转化xml