简单的 XSLT 示例
这是一个使用 XSLT 将 XML 文件中的数据转换为 HTML 文件中的表的简单示例。你可以使用它来试验简单的 XSLT 转换。
先决条件:安装 Java 运行时环境并将 JRE 的位置添加到 PATH 变量。 (在 Windows 上,大多数安装程序会将 Java 添加到你的路径中。)如果这样做,你应该能够打开命令行窗口并运行命令 java -version
并获取有关 JRE 的信息的打印输出。
- 在这里下载 Saxon-HE XSLT 处理器 for Java: saxon.sourceforge.net 并将其解压缩到你计算机上的任何位置。
- 在文本编辑器中,使用以下代码创建名为
pets.xml
的文件:
<pets>
<petType name="Dogs">
<pet id="123" name="Sparky" vaccineStatus="vaccinated" healthStatus="healthy"/>
<pet id="234" name="Sadie" vaccineStatus="unvaccinated" healthStatus="sick"/>
<pet id="345" name="Herman" vaccineStatus="unvaccinated" healthStatus="unknown"/>
</petType>
<petType name="Cats">
<pet id="456" name="Cleo" vaccineStatus="vaccinated" healthStatus="healthy"/>
<pet id="567" name="Janet" vaccineStatus="unvaccinated" healthStatus="healthy"/>
<pet id="678" name="Furry" vaccineStatus="vaccinated" healthStatus="sick"/>
</petType>
</pets>
- 在文本编辑器中,使用以下代码创建名为
petTransform.xsl
的文件:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<!-- handle the root XML element -->
<xsl:template match="/">
<html><head>
<title>Pets that are available for adoption</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="pets">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="petType">
<h2><xsl:value-of select="@name"/></h2>
<table id="{@name}">
<tr>
<th colname="id">ID</th>
<th colname="name">Name</th>
<th colname="vaccinated">Vaccine status</th>
<th colname="health">Health status</th>
</tr>
<tbody>
<!-- add a row for each pet in this category -->
<xsl:for-each select="pet">
<tr>
<td colname="id"><xsl:value-of select="@id"/></td>
<td colname="name"><xsl:value-of select="@name"/></td>
<td colname="vaccinated"><xsl:value-of select="@vaccineStatus"/></td>
<td colname="health"><xsl:value-of select="@healthStatus"/></td>
</tr>
</xsl:for-each>
</tbody>
</table>
</xsl:template>
<!-- ignore the content of other tags because we processed them elsewhere -->
<xsl:template match="*">
<!-- do nothing -->
</xsl:template>
</xsl:stylesheet>
-
打开命令行窗口并转到包含 XML 和 XSLT 文件的文件夹。
-
运行以下命令,其中
path_to_saxon.jar
是文件saxon9he.jar
的完整路径:java -jar “path_to_saxon.jar” -o petOutput.html -s:pets.xml -xsl:pettransform.xslt
例如:
java -jar "C:\Program Files\SaxonHE9-7-0-7J\saxon9he.jar" -o
petOutput.html -s:pets.xml -xsl:pettransform.xslt
确保在一行上运行此命令。
-
在文本编辑器中打开输出文件
petOutput.html
。它应该如下所示:<h2>Dogs</h2> <table id="Dogs"> <tr> <th colname="id">ID</th> <th colname="name">Name</th> <th colname="vaccinated">Vaccine status</th> <th colname="health">Health status</th> </tr> <tbody> <tr> <td colname="id">123</td> <td colname="name">Sparky</td> <td colname="vaccinated">vaccinated</td> <td colname="health">healthy</td> </tr> <tr> <td colname="id">234</td> <td colname="name">Sadie</td> <td colname="vaccinated">unvaccinated</td> <td colname="health">sick</td> </tr> <tr> <td colname="id">345</td> <td colname="name">Herman</td> <td colname="vaccinated">unvaccinated</td> <td colname="health">unknown</td> </tr> </tbody> </table> <h2>Cats</h2> <table id="Cats"> <tr> <th colname="id">ID</th> <th colname="name">Name</th> <th colname="vaccinated">Vaccine status</th> <th colname="health">Health status</th> </tr> <tbody> <tr> <td colname="id">456</td> <td colname="name">Cleo</td> <td colname="vaccinated">vaccinated</td> <td colname="health">healthy</td> </tr> <tr> <td colname="id">567</td> <td colname="name">Janet</td> <td colname="vaccinated">unvaccinated</td> <td colname="health">healthy</td> </tr> <tr> <td colname="id">678</td> <td colname="name">Furry</td> <td colname="vaccinated">vaccinated</td> <td colname="health">sick</td> </tr> </tbody> </table>
-
在 Web 浏览器中打开输出文件
petOutput.html
。它应该在一个简单的表中显示数据。