for-each_1-input.xml
<?xml version="1.0"?>
<products>
<product
id="p1">
<price>3250</price>
<stock>4</stock>
</product>
<product
id="p2">
<price>1000</price>
<stock>5</stock>
</product>
</products>
for-each_1-stylesheet.xsl
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output
indent="yes"/>
<xsl:template
match="/">
<PRODUCTS>
<xsl:for-each
select="products/product">
<PRODUCT
id="{@id}">
<PRICE>
<xsl:value-of
select="price"/>
</PRICE>
<STOCK>
<xsl:value-of
select="stock"/>
</STOCK>
</PRODUCT>
</xsl:for-each>
</PRODUCTS>
</xsl:template>
</xsl:stylesheet>
for-each_1-output.xml
<?xml version="1.0" encoding="UTF-8"?>
<PRODUCTS>
<PRODUCT
id="p1">
<PRICE>3250</PRICE>
<STOCK>4</STOCK>
</PRODUCT><PRODUCT
id="p2">
<PRICE>1000</PRICE>
<STOCK>5</STOCK>
</PRODUCT>
</PRODUCTS>
Using only one template and a xsl:for-each is very common in simple transformations.
Updated 2009-03-19