On Mon, 2007-10-01 at 12:12 -0700, Lee Hinde wrote: > Hi; > > I have questions about selectors and .each. > > Given this result: > > <queryResult parent="2" queryid="C10012007113409LEQY" > recordsinselection="2" size="2" sortfield="" tableid="2" > tablename="Person"> > <row locked="False" recordid="[2][1]" selectionid="1"> > <field fieldrecordid="1" id="[2][1]">3</field> > <field fieldrecordid="1" id="[2][2]">1</field> > <field fieldrecordid="1" id="[2][3]">Molly</field> > <field fieldrecordid="1" id="[2][4]">Hinde</field> > <field fieldrecordid="1" id="[2][5]">Adult Supervision</field> > </row> > <row locked="False" recordid="[2][0]" selectionid="2"> > <field fieldrecordid="0" id="[2][1]">2</field> > <field fieldrecordid="0" id="[2][2]">1</field> > <field fieldrecordid="0" id="[2][3]">Lee</field> > <field fieldrecordid="0" id="[2][4]">Hinde</field> > <field fieldrecordid="0" id="[2][5]">Night Custodial Staff</field> > </row> > </queryResult> > > what's the best way to iterate through to build table rows from the data? >
It looks like there is a Sarissa plugin for jquery, so: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <div> <xsl:apply-templates/> </div> </xsl:template> <xsl:template match="queryResult"> <h1> <xsl:value-of select="@tablename"/> </h1> <table> <th> <td>ID</td> <td>fID</td> <td>firstname</td> <td>lastname</td> <td>category</td> </th> <xsl:apply-templates/> </table> </xsl:template> <xsl:template match="row"> <tr class="color{position() mod 2}"> <xsl:apply-templates/> </tr> </xsl:template> <xsl:template match="field"> <td> <xsl:value-of select="."/> </td> </xsl:template> </xsl:stylesheet> > I started with: > > $j("row > field",dataXML).each(function(i){ > var fID = $j(this).attr("id"); > > if(fID=="[2][1]") {//we don't need this field, but we > only want to initialze once per record. > var hID = $j(this).parent().attr("recordid"); > var newRow = > $j("<tr>").attr("class","selectableRow").attr("id","r"+i); > };//end init > > if(fID=="[2][3]"){ > var pname = $j(this).text(); > }; > if(fID=="[2][4]"){ > pname = pname+" "+$j(this).text(); > newRow.append("<td>"+fname+"</td>"); > }; > if(fID=="[2][5]"){ > var aRow = > newRow.append("<td>"+$j(this).text()+"</td>"); > $j("#peopleList").append(aRow); > postDebug(pname); > > }; > > }) > > (figuring I'd optimize after it was working) and I was surprised that > "i" didn't always start at 0. Also, it seems wrong, I really want to > process rows, not fields. So, my question is, how do I iterate through > the rows and pull out the fields that I want to display. > > Starting with: > > $j("row",dataXML).each( > function(i){ > var fname = > $j(this).$j("field").attr("id","[2][3]").text(); > > > }); > which doesn't work. Then I tried: > > var fname = this.$j("field").attr("id","[2][3]").text(); > > and > > var fname =$j(this> "field").attr("id","[2][3]").text(); > > neither of which worked. > > So, how do I cull out the values I need? > > Thanks for reading this far. > > - Lee

