xsl-list
[Top] [All Lists]

Re: [xsl] Create Table

2010-03-23 00:22:26
My solution assumes @field='file' is a mandatory field, i.e. won't be
missing.  The gist of it is, the number of @field='file' <data> elements
above a given <data section='changes'> must equal the position() of the
//data[(_at_)field='file'] that triggered the xsl:apply-templates.

-Eric

<?xml version='1.0' encoding='utf-8'?>
<server-manifest>
    <category-source>
        <interface-categories>
            <data section='diff'>if (reportService != null)</data>
            <data section='diff'>return true;</data>
            <data section='diff'>return false;</data>
            <data section='changes' field='file'>ConvertHistoryWages.java</data>
            <data section='changes' 
field='version'>\main\spr2010_apr_dev\2</data>
            <data section='changes' field='date'>20100310.102844</data>
            <data section='changes' field='user'>jryan</data>
            <data section='changes' field='cr_number'>602018</data>
            <data section='changes' field='comment'>fix for log 5960</data>
            <data section='diff'>1296a1297,1298</data>
            <data section='diff'></data>
            <data section='diff'>if (reportService != null)</data>
            <data section='diff'>return true;</data>
            <data section='diff'>return false;</data>
            <data section='changes' field='file'>HistoryWages.java</data>
            <data section='changes' 
field='version'>\main\spr2009_apr_dev\2</data>
            <data section='changes' field='date'>20090310.102844</data>
            <data section='changes' field='cr_number'>602118</data>
            <data section='changes' field='comment'>fix for log 6950</data>
            <data section='diff'>1296a1297,1298</data>
            <data section='diff'></data>
            <data section='diff'>if (reportService != null)</data>
            <data section='diff'>return true;</data>
            <data section='diff'>return false;</data>
            <data section='changes' field='file'>Wages.java</data>
            <data section='changes' field='date'>20080310.102844</data>
            <data section='changes' field='user'>ryanj</data>
            <data section='changes' field='cr_number'>602218</data>
            <data section='diff'>1296a1297,1298</data>
            <data section='diff'></data>
        </interface-categories>
    </category-source>
</server-manifest>

<?xml version='1.0' encoding='utf-8'?>
<xsl:stylesheet version='1.0'
    xmlns='http://www.w3.org/1999/xhtml'
    xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
    <xsl:output omit-xml-declaration='no' method='xml' indent='yes' 
xml:space='default' encoding='utf-8'/>
    <xsl:template match='/'>
        <html xml:lang='en'>
            <head>
                <title>table example</title>
                <style 
type='text/css'>table{table-layout:fixed;width:auto}</style>
            </head>
            <body>
                <table width='0' summary='summary goes here for accessibility'>
                    <caption>caption goes here for accessibility</caption>
                    <thead>
                        <tr>
                            <td>&#160;</td>
                            <th>Version</th>
                            <th>Date</th>
                            <th>User</th>
                            <th>CR Number</th>
                            <th>Comment</th>
                        </tr>
                    </thead>
                    <tfoot><!-- optional -->
                        <tr>
                            <td>&#160;</td>
                            <th>Version</th>
                            <th>Date</th>
                            <th>User</th>
                            <th>CR Number</th>
                            <th>Comment</th>
                        </tr>
                    </tfoot>
                    <tbody><xsl:apply-templates 
select="//data[(_at_)field='file']"/></tbody>
                </table>
            </body>
        </html>
    </xsl:template>
    <xsl:template match='data'>
        <xsl:param name='i' select='position()'/>
        <tr>
            <th><xsl:value-of select='.'/></th>
            <td><xsl:value-of 
select="following-sibling::data[(_at_)field='version' and 
count(preceding-sibling::data[(_at_)field='file'])=$i]"/>&#160;</td>
            <td><xsl:value-of 
select="following-sibling::data[(_at_)field='date' and 
count(preceding-sibling::data[(_at_)field='file'])=$i]"/>&#160;</td>
            <td><xsl:value-of 
select="following-sibling::data[(_at_)field='user' and 
count(preceding-sibling::data[(_at_)field='file'])=$i]"/>&#160;</td>
            <td><xsl:value-of 
select="following-sibling::data[(_at_)field='cr_number' and 
count(preceding-sibling::data[(_at_)field='file'])=$i]"/>&#160;</td>
            <td><xsl:value-of 
select="following-sibling::data[(_at_)field='comment' and 
count(preceding-sibling::data[(_at_)field='file'])=$i]"/>&#160;</td>
        </tr>
    </xsl:template>
</xsl:stylesheet>

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>