XML and XSL formatting

wxdqz

New Member
I am extremely new to XML and I am wondering if I can do something to simplify my XSL file to be able to populate the table dynamically.

This is my XML file: XML with XSL attached. (<!-- m --><a class="postlink" href="http://www.design-ready.com/xml/index.xml">http://www.design-ready.com/xml/index.xml</a><!-- m -->)

You can view the XML files source to see the layout I have going. It is something along the lines of this (for those that don't want to bother going to the site):


<items>

<beverage>
<type>Fresh Brewed</type>
<name>Caf間gio Breakfast Blend</name>
<smprice>1.55</smprice>
<medprice>1.75</medprice>
<lrgprice>1.85</lrgprice>
</beverage>

<beverage>
<type>Fresh Brewed</type>
<name>Caf間gio Scuro</name>
<smprice>1.55</smprice>
<medprice>1.75</medprice>
<lrgprice>1.85</lrgprice>
</beverage>

<beverage>
<type>Expresso</type>
<name>Expresso</name>
<smprice>1.50</smprice>
<medprice>1.80</medprice>
<lrgprice></lrgprice>
</beverage>

<beverage>
<type>Latte Favs</type>
<name>Caf?Latte</name>
<smprice>2.65</smprice>
<medprice>3.20</medprice>
<lrgprice>3.50</lrgprice>
</beverage>

<beverage>
<type>Smoothies</type>
<name>Fruit Smoothie</name>
<smprice>3.50</smprice>
<medprice>4.25</medprice>
<lrgprice>5.25</lrgprice>
</beverage>

</items>


My XSL file is a bit redundant and I'd like to see if I can make it a bit more dynamic.

This is what it looks like now:


<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<body>
<table>
<tr>
<td></td><td>12 oz.</td><td>16 oz.</td><td>20 oz.</td>
</tr>
<tr>
<td colspan="4"><b>Fresh Brewed</b></td>
</tr>
<xsl:for-each select="items/beverage[type='Fresh Brewed']">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="smprice"/></td>
<td><xsl:value-of select="medprice"/></td>
<td><xsl:value-of select="lrgprice"/></td>
</tr>
</xsl:for-each>
<tr>
<td colspan="4"><b>Expressos</b></td>
</tr>
<xsl:for-each select="items/beverage[type='Expresso']">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="smprice"/></td>
<td><xsl:value-of select="medprice"/></td>
<td><xsl:value-of select="lrgprice"/></td>
</tr>
</xsl:for-each>
<tr>
<td colspan="4"><b>Latte and Favorites</b></td>
</tr>
<xsl:for-each select="items/beverage[type='Latte Favs']">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="smprice"/></td>
<td><xsl:value-of select="medprice"/></td>
<td><xsl:value-of select="lrgprice"/></td>
</tr>
</xsl:for-each>
<tr>
<td colspan="4"><b>Frappeggios</b></td>
</tr>
<xsl:for-each select="items/beverage[type='Frappeggio']">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="smprice"/></td>
<td><xsl:value-of select="medprice"/></td>
<td><xsl:value-of select="lrgprice"/></td>
</tr>
</xsl:for-each>
<tr>
<td colspan="4"><b>Smoothies</b></td>
</tr>
<xsl:for-each select="items/beverage[type='Smoothies']">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="smprice"/></td>
<td><xsl:value-of select="medprice"/></td>
<td><xsl:value-of select="lrgprice"/></td>
</tr>
</xsl:for-each>
<tr>
<td colspan="4"><b>Teas</b></td>
</tr>
<xsl:for-each select="items/beverage[type='Teas']">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="smprice"/></td>
<td><xsl:value-of select="medprice"/></td>
<td><xsl:value-of select="lrgprice"/></td>
</tr>
</xsl:for-each>
<tr>
<td colspan="4"><b>Kids</b></td>
</tr>
<xsl:for-each select="items/beverage[type='Kids']">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="smprice"/></td>
<td><xsl:value-of select="medprice"/></td>
<td><xsl:value-of select="lrgprice"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>


I'd like to make it something like this:


<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<body>
<table>
<tr>
<td></td><td>12 oz.</td><td>16 oz.</td><td>20 oz.</td>
</tr>
<tr>
<td colspan="4"><b>**A VARIABLE**</b></td>
</tr>
<xsl:for-each select="items/beverage[type='**A VARIABLE**']">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="smprice"/></td>
<td><xsl:value-of select="medprice"/></td>
<td><xsl:value-of select="lrgprice"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>


What can I use to replace "**A VARIABLE**" to work the same as the XSL I have right now?

Thank you for your help.
-Cesar
 
Back
Top