[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Can you pass a parameter from a stylesheet to the
Joerg, Once again, I really appreciate your help. The problem isn't solved yet, but I think it's because I oversimplified my original explanation and code. Here's a better simplified version of my xhmtl file: <table> <tr> <td> <ol> <li>item 1</li> <li class="mgronly">item 2</li> <li>item 3</li> </ol> </td> </tr> <tr> <td> <ol start="var"> <li>item 4</li> <li>item 5</li> <li>item 6</li> </ol> </td> </tr> </table> I am transforming this document into two different documents by using two different xsl files. The first xsl file simply copies everything: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml" version="1.0"> <xsl:output method="xml" encoding="UTF-8"/> <xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> </xsl:template> </xsl:stylesheet> The second xsl file filters out any <li> item with a class of "mgronly": <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml" version="1.0"> <xsl:output method="xml" encoding="UTF-8"/> <xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> </xsl:template> <xsl:template match="xhtml:li[@class='mgronly']"/> </xsl:stylesheet> Here's what I'm trying to do: In the first transformation, I need to replace "var" in the second <ol> tag with "4". In the second transformation, because one of the preceding <li> items is filtered out, I need to replace "var" with "3". (I don't need to have the XSL files count the <li> items to compute the "4" and "3", unless it's very easy. I can just hard code "4" and "3".) Is there a way to do this? Thanks again for all your help-- Kathryn Date: Sat, 01 Jun 2002 01:34:52 +0200 From: Joerg Heinicke <joerg.heinicke@xxxxxx> Subject: Re: Can you pass a parameter from a stylesheet to the resulting HTML file? Hello Kathryn, it's a bit difficult to see, what you are doing with your two stylesheets. In general you can do it in the following: <xsl:template match="foo"> <xsl:apply-templates select="bar"> <xsl:with-param name="name-of-param" select="value-of-param"/> </xsl:apply-templates> </xsl:template> <xsl:template match="bar"> <xsl:param name="name-of-param" select="default-value-of-param"/> <xsl:value-of select="$name-of-param"/> </xsl:template> If your stylesheet below runs on the XML below, you can do something like the following: <xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> </xsl:template> <xsl:template match="ol"> <ol start="{count(preceding::ol) + 1}"> <xsl:apply-templates select="node() | @*"/> </ol> </xsl:template> Regards, Joerg 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
|