単純な XML ドキュメントを HTML に変換しています。olやh2などのタグの一部は、テンプレートに存在し、データ自体が出力されますが、出力から欠落しています。Saxon 9 を使用して変換を適用します。
XML:
<?xml version="1.0"?>
<recipes>
<recipe>
<name>Gush'gosh</name>
<ingredients>
<ingredient>
<qty>1</qty>
<unit>pound</unit>
<food>hamburger</food>
</ingredient>
<ingredient>
<qty>1</qty>
<unit>pound</unit>
<food>elbow macaroni</food>
</ingredient>
<ingredient>
<qty>2</qty>
<unit>cups</unit>
<food>brown sugar</food>
</ingredient>
<ingredient>
<qty>1</qty>
<unit>bag</unit>
<food>chopped onions</food>
</ingredient>
<ingredient>
<qty>1</qty>
<unit>teaspoon</unit>
<food>dried dill</food>
</ingredient>
</ingredients>
<instructions>
<instruction>Brown the hamburger.</instruction>
<instruction>Add onions and cook until transparent.</instruction>
<instruction>Add brown sugar and dill.</instruction>
<instruction>Cook and drain pasta.</instruction>
<instruction>Combine meat and pasta.</instruction>
</instructions>
</recipe>
<recipe>
<name>A balanced breakfast</name>
<ingredients>
<ingredient>
<qty>1</qty>
<unit>cup</unit>
<food>cereal</food>
</ingredient>
<ingredient>
<qty>1</qty>
<unit>glass</unit>
<food>orange juice</food>
</ingredient>
<ingredient>
<qty>1</qty>
<unit>cup</unit>
<food>milk</food>
</ingredient>
<ingredient>
<qty>2</qty>
<unit>slices</unit>
<food>toast</food>
</ingredient>
</ingredients>
<instructions>
<instruction>Combine cereal and milk in bowl.</instruction>
<instruction>Add all ingredients to table.</instruction>
</instructions>
</recipe>
</recipes>
XSL:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/TR/xhtml1/strict">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>Recipes</title>
</head>
<body>
<xsl:apply-templates select="/recipes/recipe"/>
</body>
</html>
</xsl:template>
<xsl:template name="recipe">
<h2>
<xsl:value-of select="./name"/>
</h2>
<h3>Ingredients:</h3>
<p>
<!--<xsl:apply-templates select="./ingredients"/>-->
<xsl:for-each select="./ingredients/ingredient">
<xsl:value-of select="./qty"/><xsl:text> </xsl:text>
<xsl:value-of select="./unit"/><xsl:text> </xsl:text>
<xsl:value-of select="./food"/> <br/>
</xsl:for-each>
</p>
<h3>Directions:</h3>
<ol>
<!--<xsl:apply-templates select="./instructions"/>-->
<xsl:for-each select="./instructions/instruction">
<li> <xsl:value-of select="."/> </li>
</xsl:for-each>
</ol>
</xsl:template>