Simple XML transform question

Discussion in 'XML' started by mattmerc@bellsouth.net, Apr 24, 2005.

  1. Guest

    Hi,

    I am super-new at this :) I have searched everywhere for the answer to
    this question but cannot find anyone doing exactly what I am trying to
    do. BTW...I'm going to post the code as soon as I finish explaining.

    Overview: (1) XML document describing compact discs
    (3) XSL docments, 1 to organize the XML in a table by title,
    one by artist, and one by price
    (1) HTM file to help load this stuff

    Problem: I am supposed to provide three radio buttons and then allow a
    user to choose how he/she wants the XML document sorted (title, author,
    or price). It loads with title sorted by default.

    What I have done so far works...on the first pass. In other words, the
    file loads sorted by title and then you can select to order it by
    artist or price once, but then the next time you click you get an
    "Object expected" javascript error. The error occurrs on line 140 and
    my code only has about 70 lines. This tells me the way I am reloading
    the sorted xml table is causing the problem. It is as if my javascript
    routines are seen on the first pass but when the page is rebuilt they
    are not there. Maybe there is a better approach to doing this. Yes,
    this is an assignment for school not a real world project. I am truly
    trying to learn this stuff and have been googling for 2 days now tring
    to find out what I am doing wrong. I appreciate any help. I am assuming
    this is a simple problem and that I am just to green to figure it out.
    Thanks!

    XML file
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
    <!-- Edited with XML Spy v4.2 -->
    <catalog>
    <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
    </cd>
    <cd>
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <country>UK</country>
    <company>CBS Records</company>
    <price>9.90</price>
    <year>1988</year>
    </cd>
    <cd>
    <title>Greatest Hits</title>
    <artist>Dolly Parton</artist>
    <country>USA</country>
    <company>RCA</company>
    <price>9.90</price>
    <year>1982</year>
    </cd>
    <cd>
    <title>Still got the blues</title>
    <artist>Gary Moore</artist>
    <country>UK</country>
    <company>Virgin records</company>
    <price>10.20</price>
    <year>1990</year>
    </cd>
    <cd>
    <title>Eros</title>
    <artist>Eros Ramazzotti</artist>
    <country>EU</country>
    <company>BMG</company>
    <price>9.90</price>
    <year>1997</year>
    </cd>
    <cd>
    <title>One night only</title>
    <artist>Bee Gees</artist>
    <country>UK</country>
    <company>Polydor</company>
    <price>10.90</price>
    <year>1998</year>
    </cd>
    <cd>
    <title>Sylvias Mother</title>
    <artist>Dr.Hook</artist>
    <country>UK</country>
    <company>CBS</company>
    <price>8.10</price>
    <year>1973</year>
    </cd>
    <cd>
    <title>Maggie May</title>
    <artist>Rod Stewart</artist>
    <country>UK</country>
    <company>Pickwick</company>
    <price>8.50</price>
    <year>1990</year>
    </cd>
    <cd>
    <title>Romanza</title>
    <artist>Andrea Bocelli</artist>
    <country>EU</country>
    <company>Polydor</company>
    <price>10.80</price>
    <year>1996</year>
    </cd>
    <cd>
    <title>When a man loves a woman</title>
    <artist>Percy Sledge</artist>
    <country>USA</country>
    <company>Atlantic</company>
    <price>8.70</price>
    <year>1987</year>
    </cd>
    <cd>
    <title>Black angel</title>
    <artist>Savage Rose</artist>
    <country>EU</country>
    <company>Mega</company>
    <price>10.90</price>
    <year>1995</year>
    </cd>
    <cd>
    <title>1999 Grammy Nominees</title>
    <artist>Many</artist>
    <country>USA</country>
    <company>Grammy</company>
    <price>10.20</price>
    <year>1999</year>
    </cd>
    <cd>
    <title>For the good times</title>
    <artist>Kenny Rogers</artist>
    <country>UK</country>
    <company>Mucik Master</company>
    <price>8.70</price>
    <year>1995</year>
    </cd>
    <cd>
    <title>Big Willie style</title>
    <artist>Will Smith</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>9.90</price>
    <year>1997</year>
    </cd>
    <cd>
    <title>Tupelo Honey</title>
    <artist>Van Morrison</artist>
    <country>UK</country>
    <company>Polydor</company>
    <price>8.20</price>
    <year>1971</year>
    </cd>
    <cd>
    <title>Soulsville</title>
    <artist>Jorn Hoel</artist>
    <country>Norway</country>
    <company>WEA</company>
    <price>7.90</price>
    <year>1996</year>
    </cd>
    <cd>
    <title>The very best of</title>
    <artist>Cat Stevens</artist>
    <country>UK</country>
    <company>Island</company>
    <price>8.90</price>
    <year>1990</year>
    </cd>
    <cd>
    <title>Stop</title>
    <artist>Sam Brown</artist>
    <country>UK</country>
    <company>A and M</company>
    <price>8.90</price>
    <year>1988</year>
    </cd>
    <cd>
    <title>Bridge of Spies</title>
    <artist>T`Pau</artist>
    <country>UK</country>
    <company>Siren</company>
    <price>7.90</price>
    <year>1987</year>
    </cd>
    <cd>
    <title>Private Dancer</title>
    <artist>Tina Turner</artist>
    <country>UK</country>
    <company>Capitol</company>
    <price>8.90</price>
    <year>1983</year>
    </cd>
    <cd>
    <title>Midt om natten</title>
    <artist>Kim Larsen</artist>
    <country>EU</country>
    <company>Medley</company>
    <price>7.80</price>
    <year>1983</year>
    </cd>
    <cd>
    <title>Pavarotti Gala Concert</title>
    <artist>Luciano Pavarotti</artist>
    <country>UK</country>
    <company>DECCA</company>
    <price>9.90</price>
    <year>1991</year>
    </cd>
    <cd>
    <title>The dock of the bay</title>
    <artist>Otis Redding</artist>
    <country>USA</country>
    <company>Atlantic</company>
    <price>7.90</price>
    <year>1987</year>
    </cd>
    <cd>
    <title>Picture book</title>
    <artist>Simply Red</artist>
    <country>EU</country>
    <company>Elektra</company>
    <price>7.20</price>
    <year>1985</year>
    </cd>
    <cd>
    <title>Red</title>
    <artist>The Communards</artist>
    <country>UK</country>
    <company>London</company>
    <price>7.80</price>
    <year>1987</year>
    </cd>
    <cd>
    <title>Unchain my heart</title>
    <artist>Joe Cocker</artist>
    <country>USA</country>
    <company>EMI</company>
    <price>8.20</price>
    <year>1987</year>
    </cd>
    </catalog>

    XSL FILE (one that organizes by title...the others are similar)
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/">
    <html>
    <head>
    </head>
    <body>
    <h2>My CD Collection</h2>
    <table border="1">
    <tr bgcolor="#9acd32">
    <th bgcolor="FF0000">Title</th>
    <th>Artist</th>
    <th>Price</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <xsl:sort select="title"/>
    <tr>
    <td><xsl:value-of select="title"/></td>
    <td><xsl:value-of select="artist"/></td>
    <td><xsl:value-of select="price"/></td>
    </tr>
    </xsl:for-each>
    </table>
    <br />
    <input name="sortradio" type="radio" value="title"
    onclick="sortlist_title()">Title</input>
    <input name="sortradio" type="radio" value="artist"
    onclick="sortlist_artist()">Artist</input>
    <input name="sortradio" type="radio" value="price"
    onclick="sortlist_price()"> Price</input>
    </body>
    </html>
    </xsl:template>

    </xsl:stylesheet>

    HTM FILE (loads by title as default and then javascript triggered by
    radio buttons)

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/">
    <html>
    <head>
    </head>
    <body>
    <h2>My CD Collection</h2>
    <table border="1">
    <tr bgcolor="#9acd32">
    <th bgcolor="FF0000">Title</th>
    <th>Artist</th>
    <th>Price</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <xsl:sort select="title"/>
    <tr>
    <td><xsl:value-of select="title"/></td>
    <td><xsl:value-of select="artist"/></td>
    <td><xsl:value-of select="price"/></td>
    </tr>
    </xsl:for-each>
    </table>
    <br />
    <input name="sortradio" type="radio" value="title"
    onclick="sortlist_title()">Title</input>
    <input name="sortradio" type="radio" value="artist"
    onclick="sortlist_artist()">Artist</input>
    <input name="sortradio" type="radio" value="price"
    onclick="sortlist_price()"> Price</input>
    </body>
    </html>
    </xsl:template>

    </xsl:stylesheet>


    Thanks again!
    , Apr 24, 2005
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. KathyB
    Replies:
    0
    Views:
    1,003
    KathyB
    Jun 25, 2003
  2. Replies:
    1
    Views:
    728
    Esmond Pitt
    Mar 27, 2005
  3. Duane Morin
    Replies:
    3
    Views:
    624
    Marten Gaans
    Jan 26, 2004
  4. Replies:
    0
    Views:
    491
  5. Erik Wasser
    Replies:
    5
    Views:
    437
    Peter J. Holzer
    Mar 5, 2006
Loading...

Share This Page