Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

Create ordered list

File: Data.xml <?xml version="1.0"?> <manual type="assembly" id="model-rocket">   <parts-list>     <part label="A" count="1">part 1</part>     <part label="B" count="1">part 2</part>     <part label="F" count="4">part 3</part>     <part label="N" count="3">part 4</part>     <part label="C" count="1">part 5</part>   </parts-list>   <instructions>     <step>       Glue       <part ref="A" />       and       <part ref="B" />       together.     </step>     <step>       For each       <part ref="F" />       , .     </step>     <step>       Connect       <part ref="C" />     </step>   </instructions> </manual> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   version="1.0">   <xsl:output method="xml" encoding="ISO-8859-1" />   <xsl:template match="manual">     <html>       <head>         <title>Instructions Guide</title>       </head>       <body>         <h1>Instructions Guide</h1>         <xsl:apply-templates />       </body>     </html>   </xsl:template>   <xsl:template match="parts-list">     <h2>Parts</h2>     <dl>       <xsl:apply-templates />     </dl>   </xsl:template>   <xsl:template match="part[@label]">     <dt>       <xsl:value-of select="@label" />     </dt>     <dd>       <xsl:apply-templates />     </dd>   </xsl:template>   <xsl:template match="part[@ref]">     <xsl:variable name="label">       <xsl:value-of select="@ref" />     </xsl:variable>     <xsl:value-of select="//part[@label=$label]"></xsl:value-of>     <xsl:text> (Part </xsl:text>     <xsl:value-of select="@ref" />     <xsl:text>)</xsl:text>   </xsl:template>   <xsl:template match="instructions">     <h2>Steps</h2>     <ol>       <xsl:apply-templates />     </ol>   </xsl:template>   <xsl:template match="step">     <li>       <xsl:apply-templates />     </li>   </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="ISO-8859-1"?><html><head><title>Instructions Guide</title></head><body><h1>Instructions Guide</h1>   <h2>Parts</h2><dl>     <dt>A</dt><dd>part 1</dd>     <dt>B</dt><dd>part 2</dd>     <dt>F</dt><dd>part 3</dd>     <dt>N</dt><dd>part 4</dd>     <dt>C</dt><dd>part 5</dd>   </dl>   <h2>Steps</h2><ol>     <li>       Glue       part 1 (Part A)       and       part 2 (Part B)       together.     </li>     <li>       For each       part 3 (Part F)       , .     </li>     <li>       Connect       part 5 (Part C)     </li>   </ol> </body></html>