|
Subject: RE: [xsl] Dropdown From: Juan Carlos Gonzalez <jcgonz@xxxxxxxxx> Date: Tue, 22 Oct 2002 11:19:23 -0700 (PDT) |
This is my template. I'm trying to generate input tags
based on the type read from the xml file.
Thanks
<xsl:template match="csd">
<xsl:for-each select="sd[count(. | key('specs_key',
@Name)[1])=1]">
<xsl:if test="@Type = 'DropDown'">
<select name="Name">
<option value="-">--Select Name--</option>
</xsl:if>
<xsl:for-each select="key('specs_key', @Name)">
<xsl:choose>
<xsl:when test="@Type = 'DropDown'">
<xsl:element name="option">
<xsl:attribute name="value"><xsl:value-of
select="@Val"/></xsl:attribute>
<xsl:value-of select="@Val"/>
</xsl:element>
</xsl:when>
<xsl:when test="@Type = 'CheckBox'">
<xsl:element name="input">
<xsl:attribute name="type">checkbox</xsl:attribute>
<xsl:attribute name="id"><xsl:value-of
select="@DetailId"/></xsl:attribute>
</xsl:element>
</xsl:when>
<xsl:when test="@Type = 'Radio'">
<xsl:element name="input">
<xsl:attribute name="type">radio</xsl:attribute>
<xsl:attribute name="id"><xsl:value-of
select="@DetailId"/></xsl:attribute>
<xsl:value-of select="@Val"/> 
</xsl:element>
</xsl:when>
<xsl:when test="@Type = 'Free Form Text'">
<xsl:value-of select="@Val"/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
<xsl:if test="@Type = 'DropDown'">
</select>
</xsl:if>
</xsl:for-each>
</xsl:template>
--- "Passin, Tom" <tpassin@xxxxxxxxxxxx> wrote:
> [ Juan Carlos Gonzalez]
> >
> > I'm trying to create a drop down list box
> dynamically,
> > but I'm getting an error message cause the
> "select"
> > tag is not being closed within the "if" tag. I
> have
> > tried replacing the < and > sign with the < and
> > > but it's still not working. Any ideas?
> >
> > <xsl:if test="some condition">
> > <select name="cat">
> > </xsl:if>
> >
> > ...the folowing template will create the options
> tag
> > amoung other things ...
> >
> > <xsl:apply-templates select="cat"/>
> >
> > <xsl:if test="some condition">
> > </select>
> > </xsl:if>
>
> You must complete and close the select element
> within the xsl:if
> element. Remember that the stylesheet has to be
> well-formed xml. If
> you think that you need to do something else, you
> have not understood
> your problem thoroughly enough yet. If you explain
> what you really wish
> to accomplish, we will be able to help you with it.
>
> For example, if you want to create a select element,
> then you surely
> will want to create options inside it. If you want
> to create the select
> list only if there are any cat elements, and have
> one option per cat,
> then you could write (assuming that the "cat"
> element contains the name
> of the cat as character data)
>
> <xsl:if test='cat'> <!-- executed if there are any
> "cat" child elements
> -->
> <select name='cat'>
> <xsl:for-each select='cat'>
> <option value='{.}'><xsl:value-of
> select='.'/></option>
> </xsl:for-each>
> </select>
> </xsl:if>
>
> If you specify an xsl:output method of 'html', the
> output will be in
> ordinary html (rather than in xml), and the options
> will come out
> looking like normal html options:
>
> <option value='Mary'>Mary
>
> You could also use apply-templates instead of the
> for-each, which might
> be better if you have more complex processing to do
> in constructing the
> options. In this case, you would build the options
> in the template for
> "cat" rather than as shown here.
>
> Cheers,
>
> Tom P
>
> XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
>
__________________________________________________
Do you Yahoo!?
Y! Web Hosting - Let the expert host your web site
http://webhosting.yahoo.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Dropdown, Passin, Tom | Thread | Re: [xsl] Dropdown, David Carlisle |
| RE: [xsl] XML in IE6, Chuck White | Date | RE: [xsl] Dropdown, Passin, Tom |
| Month |