|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Selecting and printing certain nodes
> -----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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








