|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Adding a chekbox with XSL
Monday, October 02, 2000, 2:47:43 PM, you wrote:
> I have an XML document that looks like this:
> <DemoMenu>
> <option strValue="Setup" textValue="Y"/>
> </ndsDemoMenu>
> If the value of DemoMenu.option.textValue == 'Y' then I want to add a
> checkbox to my page that is already checked. If the value is not == to
> 'Y' then I want it to be unchecked. Setup is the name of the checkbox.
> I've figure out how to extract and display "Setup", what I can't figure
> out is how to use xsl:if (I realize xsl:choose is really what I want but
> I wanted to simplify until I get the basics figured out) to verify the
> value of textValue. I tried:
> <xsl:if test="<xsl:value-of select="@textValue"/> =
"Y"">>
> <p align="center"><xsl:value-of select="text"/><input
> Type="Checkbox" align="center" checked="Y" value="Y"/></p>
> </xsl:if>
> trying to say
> <xsl:if test="<xsl:value-of select="@textValue"/> = "Y"">
> <p align="center"><xsl:value-of select="text"/><input
> Type="Checkbox" align="center" checked="Y" value="Y"/></p>
> </xsl:if>
You can't put elements (eg. xsl:value-of) inside of an attribute.. in this case
the test attribute of the element xsl:if.
But, don't worry! because there is an easier way to get at that value.
When you say "setup" is the "name" of the checkbox.. I will assume you mean the
text that resides beside it since that is what it appears you are trying to do.
This should work :
<p align="center">
<xsl:value-of select="strValue"/>
<xsl:if test="@textValue='Y'"> <!-- checked -->
<input type="checkbox" align="center" checked="Y" value="Y"/>
</xsl:if>
<xsl:if test="not(@textValue='Y')"> <!-- not checked -->
<input type="checkbox" align="center" value="Y"/>
</xsl:if>
</p>
I don't know if you still wanted the value of the checkbox etc to be the same in
each case.. but the general structure is there. Notice I extracted the
duplicated sections and just put them once on the outside of the xsl:if
sections. You could even reduce further by just adding an attribute named
checked="" in the case where it should be checked. But maybe that is getting
silly =)
Note.. the above DOES assume that it is being executed while within the option
node... that is, within an <xsl:apply-template select="option"> or something
similar.
You could also just use xsl:choose like this :
<p align="center">
<xsl:value-of select="strValue"/>
<xsl:choose>
<xsl:when test="@textValue='Y'"> <!-- checked -->
<input type="checkbox" align="center" checked="Y" value="Y"/>
</xsl:when>
<xsl:otherwise> <!-- not checked -->
<input type="checkbox" align="center" value="Y"/>
</xsl:otherwise>
</xsl:choose>
</p>
And although a little wordier... it does seem clearer to me what is going on.
Good luck.
Dylan Parker
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








