XSLT(Extensible Stylesheet Language Transformations)是用于将 XML 数据转换成其他格式(如 HTML、文本或其他 XML 格式)的语言。通过 XSLT,您可以定义转换规则,以便将 XML 数据展示为适合浏览器或其他应用程序的格式。

1. XSLT 简介

XSLT 是一种用于定义 XML 文档样式的语言,它与 XML 配合使用,通过将 XML 数据转换为人类可读的格式(如 HTML)或其他类型的输出,来增加其可视化和易用性。

XSLT 文件通常包含规则和模板,用于指示如何根据 XML 数据生成目标格式。常见的用法是将 XML 转换为 HTML,以便在浏览器中呈现。

2. 基本的 XSLT 结构

XSLT 文件本身是一个 XML 文件,它定义了如何选择和显示 XML 文件中的数据。XSLT 文件的基本结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 定义模板规则和转换规则 -->
</xsl:stylesheet>

2.1 XSLT 主要元素

  • <xsl:stylesheet>: 定义 XSLT 样式表。
  • <xsl:template>: 定义转换规则,告诉 XSLT 如何处理匹配的元素。
  • <xsl:value-of>: 提取并显示 XML 元素的内容。
  • <xsl:for-each>: 用于遍历一个元素集合并对每个元素执行操作。

3. 通过 XSLT 转换 XML

假设您有一个 XML 文件,内容如下:

XML 文件(books.xml):

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book>
        <title>Learning XML</title>
        <author>John Doe</author>
        <price>39.99</price>
    </book>
    <book>
        <title>XML for Beginners</title>
        <author>Jane Smith</author>
        <price>29.99</price>
    </book>
</bookstore>

3.1 XSLT 文件(books.xsl

我们将创建一个 XSLT 文件,使用它来将 books.xml 转换为 HTML 格式,供浏览器显示:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    <!-- 模板:匹配根元素 bookstore -->
    <xsl:template match="/bookstore">
        <html>
            <head>
                <title>Bookstore</title>
                <style>
                    body { font-family: Arial, sans-serif; }
                    table { width: 100%; border-collapse: collapse; }
                    th, td { padding: 10px; text-align: left; }
                    tr:nth-child(even) { background-color: #f2f2f2; }
                </style>
            </head>
            <body>
                <h1>Welcome to the Bookstore</h1>
                <table border="1">
                    <tr>
                        <th>Title</th>
                        <th>Author</th>
                        <th>Price</th>
                    </tr>
                    <!-- 遍历所有 book 元素 -->
                    <xsl:for-each select="book">
                        <tr>
                            <td><xsl:value-of select="title" /></td>
                            <td><xsl:value-of select="author" /></td>
                            <td><xsl:value-of select="price" /></td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
    
</xsl:stylesheet>

3.2 XML 与 XSLT 的集成

为了将 XML 文件与 XSLT 样式表结合使用,您需要在 XML 文件中通过 <?xml-stylesheet?> 指令来链接 XSLT 文件:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="books.xsl"?>
<bookstore>
    <book>
        <title>Learning XML</title>
        <author>John Doe</author>
        <price>39.99</price>
    </book>
    <book>
        <title>XML for Beginners</title>
        <author>Jane Smith</author>
        <price>29.99</price>
    </book>
</bookstore>

3.3 结果效果

当 XML 文件与 XSLT 样式表关联时,浏览器会将 XML 数据转换为 HTML 格式,并根据定义的样式呈现。呈现的内容如下:

  • 标题:显示书籍的名称、作者和价格。
  • 表格:包含书籍的详细信息,并为每本书创建一行。

4. XSLT 的其他常用功能

XSLT 还具有许多强大的功能,可以更复杂地处理 XML 数据并生成各种输出格式。以下是一些常见的 XSLT 功能:

4.1 条件判断

您可以在 XSLT 中使用 <xsl:if> 或 <xsl:choose> 来根据条件显示不同的内容。例如:

<xsl:if test="price > 30">
    <p>This book is expensive!</p>
</xsl:if>

4.2 排序

通过 <xsl:sort>,您可以按特定的条件对元素进行排序:

<xsl:for-each select="book">
    <xsl:sort select="price" data-type="number" order="ascending"/>
    <tr>
        <td><xsl:value-of select="title" /></td>
        <td><xsl:value-of select="author" /></td>
        <td><xsl:value-of select="price" /></td>
    </tr>
</xsl:for-each>

4.3 命名空间支持

XSLT 可以处理带有命名空间的 XML 数据。这对于复杂的 XML 文件(例如 XML Schema、SOAP 请求等)非常有用。

<xsl:value-of select="ns:elementName" />


5. 总结

使用 XSLT 转换和显示 XML 文件是一种强大的方式,可以将 XML 数据呈现为易于理解和使用的格式。通过 XSLT,您可以定义数据的展示方式、格式化规则,并根据需要处理和转换数据。

  • XSLT 的优势
    • 灵活:可以将 XML 数据转换为多种输出格式(如 HTML、文本等)。
    • 强大:支持循环、条件判断、排序、分组等功能。
    • 可扩展:支持多个模板、命名空间等。
  • 注意事项
    • XSLT 文件本身是 XML 格式的,因此可能需要了解 XML 语法。
    • 在使用 XSLT 转换时,确保 XML 和 XSLT 文件正确链接。

通过这种方式,您可以让 XML 文件不仅仅是原始的数据存储格式,还能通过 XSLT 转换为美观且用户友好的展示格式。