Re: [xsl] XSL checkbox

Subject: Re: [xsl] XSL checkbox
From: "Joe Fawcett" <joefawcett@xxxxxxxxxxx>
Date: Tue, 18 May 2004 15:49:30 +0100
----- Original Message ----- From: "Adrian Popescu" <adrian@xxxxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Tuesday, May 18, 2004 3:33 PM
Subject: Re: [xsl] XSL checkbox



I am newbie in XSL and I search ALL GOOGLE for an example:((

this is my XSL

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="uri:xsl">
 <xsl:template match="/">
   <SCRIPT>
   function change(title_id)
   {
     alert(title_id);
     var root = detailXSL.documentElement;
     var selectedElems =  root.selectNodes("//xsl:for-each");
     var ifStatement = selectedElems.item(0);
     ifStatement.attributes(0).text =
                     "@title_id[.='" + title_id + "']";

     document.write(titles.transformNode(detailXSL.documentElement));
   }
   </SCRIPT>
   <H3>Titles</H3>
   <TABLE BORDER="1" CELLPADDING="1" CELLSPACING="0">
     <TR>
       <TD BGCOLOR="#C0C0C0"><B>Title</B></TD>
       <TD BGCOLOR="#C0C0C0"><B>Details</B></TD>
     </TR>
     <xsl:for-each select="titlelist/titles" order-by="@title">
       <TR>
         <TD VALIGN="top"><xsl:value-of select="@title"/></TD>
         <TD VALIGN="top"><INPUT>
           <xsl:attribute name="TYPE">checkbox</xsl:attribute>
           <xsl:attribute name="VALUE">c1</xsl:attribute>
           <xsl:attribute name="ONCLICK">

                  <xsl:attribute
name="backgroundcolor">yellow</xsl:attribute>

<xsl:apply-templates/>

           </xsl:attribute>
         </INPUT></TD>
       </TR>
     </xsl:for-each>
   </TABLE>
   <XML ID="titles" SRC="titles.xml"></XML>
   <XML ID="detailXSL" SRC="details.xsl"></XML>
 </xsl:template>
</xsl:stylesheet>




As was said this seems more like an HTML question but you are using xsl:attribute incorrectly.
The htnl you need is:
<input type="checkbox" onclick="toggleColour(this);">
so your xsl should be (I haven't checked any other stuff):
<INPUT>
<xsl:attribute name="TYPE">checkbox</xsl:attribute>
<xsl:attribute name="VALUE">c1</xsl:attribute>
<xsl:attribute name="ONCLICK">
toggleColour(this);
</xsl:attribute>


<xsl:apply-templates/>
Then output the following script block somewhere, as you have with your other block:


<script>
<![CDATA[

 function toggleColour(Element)
{
   if (Element.style.backgroundColor == "#ffff00"
  {
    Element.style.backgroundColor = "#ffffff";
  }
  else
  {
    Element.style.backgroundColor = "#ffff00";
  }
}
]]>
</script>

Now you could put that code into an inline event handler but it would be rather messy :)

--

Joe

Current Thread