2013-04-29 27 views
0

我正在將簡單的XML文檔轉換爲HTML。某些標記(如olh2)從輸出中丟失,雖然它們出現在模板中,並且數據本身在輸出中。我使用Saxon 9來應用轉換。XSLT轉換後缺少一些HTML標籤

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> 

回答

2

這僅僅是這條線在這裏是因爲...

<xsl:template name="recipe"> 

這意味着模板是命名模板化,可以o只能用xsl:呼叫模板來呼叫。但是,您在此處使用的是匹配模板,因此您需要像這樣編寫它:

<xsl:template match="recipe"> 
+0

謝謝!我完全錯過了它。 – damluar 2013-04-29 18:10:24