0

単純な XML ドキュメントを HTML に変換しています。olh2などのタグの一部は、テンプレートに存在し、データ自体が出力されますが、出力から欠落しています。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>
4

1 に答える 1

2

これは単にこの行のせいです...

<xsl:template name="recipe">

これは、テンプレートが名前付きテンプレートであり、xsl:call-templateでのみ呼び出すことができることを意味します。ただし、ここでは一致するテンプレートを使用しているため、次のように記述する必要があります。

<xsl:template match="recipe">
于 2013-04-29T11:52:36.150 に答える