Question : XSL

Would XSL be a good way for a BEGINNER to create a printable price list from and xml file or is there an EASIER way?

Answer : XSL

Try this (it does what you need)

- the styling you need to do yourself, I don't think that needs to be a problem, some CSS will do, maybe add a cell in the middle

- the technique I use for grouping is a standard one, explained very nicely here
http://www.jenitennison.com/xslt/grouping/muenchian.xml

- I suggest that you normalize the case on export. That is easier done in Access, rather than in XSLT1
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
    <xsl:key name="row" match="row[not(hide='true')]" use="category"/>
    <xsl:template match="/">
        <html>
            <body>
                <xsl:apply-templates select="table"/>
            </body>
        </html>
    </xsl:template>
    <xsl:template match="table">
                <table border="1">
                    <xsl:for-each select="row[generate-id() = generate-id(key('row', category)[1])]">
                        <xsl:sort select="category"/>
                        <tr>
                            <th><xsl:value-of select="category"/></th>
                            <th>Scientific Name</th>
                            <th>Common Name</th>
                            <th>Size</th>
                            <th>Price Ea</th>
                            <th>Price Pairs</th>
                            <th>Price Trio</th>
                            <th>Type</th>
                        </tr>
                        <xsl:for-each select="key('row', category)">
                            <xsl:sort  select="pname"/>
                            <xsl:sort  select="psize"/>
                            <tr>
                                <xsl:if test="position() = 1">
                                    <td rowspan="{count(key('row', category))}"></td>
                                </xsl:if>
                                <td><xsl:value-of select="pname"/></td>
                                <td><xsl:value-of select="subname"/></td>
                                <td><xsl:value-of select="psize"/></td>
                                <td><xsl:value-of select="price"/></td>
                                <td><xsl:value-of select="pairsPrice"/></td>
                                <td><xsl:value-of select="trioPrice"/></td>
                                <td><xsl:value-of select="tag"/></td>
                            </tr>
                        </xsl:for-each>
                        
                    </xsl:for-each>
                </table>
    </xsl:template>
</xsl:stylesheet>
Random Solutions  
 
programming4us programming4us