# 介绍 XSL，XSLT 和 XPath

> 原文： [https://docs.oracle.com/javase/tutorial/jaxp/xslt/intro.html](https://docs.oracle.com/javase/tutorial/jaxp/xslt/intro.html)

可扩展样式表语言（XSL）有三个主要子组件：

XSL-FO

格式化对象标准。到目前为止，这个标准是最大的子组件，它提供了描述字体大小，页面布局和对象渲染的其他方面的机制。此子组件未包含在 JAXP 中，也未包含在本教程中。

XSLT

这是转换语言，它允许您定义从 XML 到其他格式的转换。例如，您可以使用 XSLT 生成 HTML 或不同的 XML 结构。您甚至可以使用它来生成纯文本或将信息放入其他文档格式。 （正如您将在[从任意数据结构生成 XML](generatingXML.html) 中看到的那样，一个聪明的应用程序可以将其用于服务以操纵非 XML 数据）。

XPath

在底部，XSLT 是一种语言，允许您指定遇到特定元素时要执行的操作。但是要为 XML 数据结构的不同部分编写程序，您需要在任何给定时间指定您正在讨论的结构部分。 XPath 是规范语言。它是一种寻址机制，允许您指定元素的路径，例如，`&lt; article&gt;&lt; title&gt;` 可以与`&lt; person&gt;&lt; title&gt;区别开来。` 。通过这种方式，您可以为不同的`&lt; title&gt;描述不同类型的翻译。` 元素。

本节的其余部分描述了构成 JAXP Transformation API 的包。

## JAXP 转换包

以下是构成 JAXP Transformation API 的包的说明：

`javax.xml.transform`

此包定义用于获取 `Transformer` 对象的工厂类。然后使用输入（源）和输出（结果）对象配置变换器，并调用其 `transform（）`方法以进行转换。使用其他三个包中的一个类创建源和结果对象。

`javax.xml.transform.dom`

定义 `DOMSource` 和 `DOMResult` 类，它们允许您使用 DOM 作为转换的输入或输出。

`javax.xml.transform.sax`

定义 `SAXSource` 和 `SAXResult` 类，它们允许您使用 SAX 事件生成器作为转换的输入，或将 SAX 事件作为输出提供给 SAX 事件处理器。

`javax.xml.transform.stream`

定义 `StreamSource` 和 `StreamResult` 类，它们允许您使用 I / O 流作为转换的输入或输出。

## XSLT 示例程序

与本教程中的其他课程不同，本课程中使用的示例程序不包含在 _install-dir_ `/ jaxp-1_4_2-` _ 发布日期 _ 中 `/ samples` 目录随 JAXP 1.4.2 参考实现提供。但是你可以 [`download a ZIP file of the XSLT samples here`](../examples/xslt_samples.zip) 。