|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] XSLT's with Cocoon
I am using Cocoon 1.5 with XSL:P which implements the XSLT WD 1.0 19990421. The next release of Cocoon will support XT, but I would like to get my current problem solved using an "official" release of Cocoon, and I seem to be stuck with XSL:P.
I want to detect a change in the value of <STAT_CATEGORY> for each <ROW>. I thought I could create <xsl:variable>s to save the last <STAT_CATEGORY>, but I soon found out that this is not possible! So I read up on XPath and XSLT working drafts, and only recently discovered that XSL:P implements a relatively old version. Because Cocoon does not give me any clue to any XSL processing errors or warnings, I have done a lot of trial and error trying to figure this out.
I am using the following edited XML data (re-formatted by hand because the SQLProcessor doesn't have a "pretty" option):
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="dashboard.xsl" type="text/xsl"?>
<?cocoon-process type="xslt"?>
<page>
<ROWSET>
<ROW ID="0">
<ORDER_NBR>0</ORDER_NBR>
<STAT_CATEGORY>Sales</STAT_CATEGORY>
<STAT_TITLE>SS Sales</STAT_TITLE>
<SAMPLE_VALUE>-999</SAMPLE_VALUE>
</ROW>
<ROW ID="1">
<ORDER_NBR>0</ORDER_NBR>
<STAT_CATEGORY>Sales</STAT_CATEGORY>
<STAT_TITLE>SS Sales</STAT_TITLE>
<SAMPLE_VALUE>118487391.17</SAMPLE_VALUE>
</ROW>
<ROW ID="9">
<ORDER_NBR>4</ORDER_NBR>
<STAT_CATEGORY>Sales</STAT_CATEGORY>
<STAT_TITLE>Total Sales</STAT_TITLE>
<SAMPLE_VALUE>289400790.91</SAMPLE_VALUE>
</ROW>
<ROW ID="10">
<ORDER_NBR>5</ORDER_NBR>
<STAT_CATEGORY>GP</STAT_CATEGORY>
<STAT_TITLE>SS GP</STAT_TITLE>
<SAMPLE_VALUE>-999</SAMPLE_VALUE>
</ROW>
<ROW ID="11">
My dashboard.xsl file looks like this (edited):
<xsl:template match="ROWSET">
<TABLE border="2" width="80%" cellspacing="1" cellpadding="1">
<xsl:for-each select="ROW">
<xsl:choose>
<xsl:when test="SAMPLE_VALUE=(-999)">
<xsl:value-of select="../ROW[@ID=(current()/@ID-1)]/@ID"/>;
<xsl:value-of select="from-preceding-siblings(.[position()=1]/@ID)"/>;
<xsl:choose>
<xsl:when test="not(//ROW[@ID=(../@ID-1))]/STAT_CATEGORY = STAT_CATEGORY)">
<TR>
<xsl:apply-templates/>
</TR>
</xsl:when>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<TR>
<xsl:apply-templates/>
</TR>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</TABLE>
</xsl:template>
I'm obviously using the <xsl:value-of> to print out some values to see if they will work in a test attribute. The first one is what I think it should be. The second one is my attempt at using the 19990421 WD. The <xsl:when> is an example of what does not work, as explained in the most recent WD (but I have it in there so I can get some sort of output).
So, my question is, how do I do this with XSL:P and XT?
cheers,
Simon
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








