-----Original Message-----
From: Glenn MacGregor
<snip />
Although my input no longer looks like:
Hmm. I'll start by giving 'a' solution for the original layout, then see if
we can adapt it to use the adapted one
<xsl:stylesheet ...>
...
<xsl:template match="/">
<xsl:apply-templates select="foreach/item" />
</xsl:template>
<xsl:template match="item">
<xsl:apply-templates select="../do">
<xsl:with-param name="pitem" select="." />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="do">
<xsl:param name="pitem" />
<xsl:apply-templates>
<xsl:with-param name="pitem" select="$pitem" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="node()">
<xsl:param name="pitem" />
<xsl:copy>
<xsl:apply-templates>
<xsl:with-param name="pitem" select="$pitem" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="var">
<xsl:param name="pitem" />
<xsl:value-of select="$pitem" />
</xsl:template>
</xsl:stylesheet>
Actually, I think it would be even simpler to say:
<xsl:stylesheet ...>
...
<xsl:template match="/">
<xsl:apply-templates select="foreach/do" />
</xsl:template>
<xsl:template match="do">
<xsl:variable name="vdo" select="*"/>
<xsl:for-each select="../item">
<xsl:apply-templates select="$vdo">
<xsl:with-param name="pitem" select="." />
</xsl:apply-templates>
</xsl:for-each>
</xsl:template>
<xsl:template match="node()">
<xsl:param name="pitem" />
<xsl:copy>
<xsl:apply-templates>
<xsl:with-param name="pitem" select="$pitem" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="var">
<xsl:param name="pitem" />
<xsl:value-of select="$pitem" />
</xsl:template>
</xsl:stylesheet>
It looks like:
<foreach param="devices">
<tr><td><b>BOLDFACE</b> Some Text</td><td>Here</td></tr>
<tr><td> Test11</td><td>Test</td></tr>
</foreach>
Along with this fragment of XML I also have another XML file name
@param.xml
(devices.xml) which contains an XML list of all the devices I want to loop
through
<doc>
<item>dev1</item>
<item>dev2</item>
<item>dev3</item>
<item>dev4</item>
</doc>
So, change the template to something like:
<xsl:stylesheet ..>
..
<xsl:template match="/">
<xsl:apply-templates select="foreach/do" />
</xsl:template>
<xsl:template match="do">
<xsl:variable name="vdo" select="*" />
<xsl:for-each select="document(
concat($some_directory,.,'.xml')
)//doc/item">
<xsl:apply-templates select="$vdo">
<xsl:with-param name="pitem" select="." />
</xsl:apply-templates>
</xsl:template>
<!-- copy the node() and var templates from above -->
</xsl:stylesheet>
Hope this helps!
Cheers,
Andreas
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list