|
Subject: RE: [xsl] Dropdown From: Juan Carlos Gonzalez <jcgonz@xxxxxxxxx> Date: Tue, 22 Oct 2002 12:39:54 -0700 (PDT) |
This is how the XML file looks:
<root>
<csd CatId="1">
<sd DetailId="112" Name="Warranty" Val="1 Year"
Type="CheckBox" />
<sd DetailId="113" Name="Warranty" Val="2 Years"
Type="CheckBox" />
<sd DetailId="110" Name="Type" Val="Leather"
Type="Radio" />
<sd DetailId="111" Name="Type" Val="Plastic"
Type="Radio" />
</csd>
<csd CatId="38">
<sd DetailId="108" Name="Size" Val="AA" Type="Radio"
/>
<sd DetailId="109" Name="Size" Val="AAA"
Type="Radio" />
</csd>
<csd CatId="369">
<sd DetailId="119" Name="Color" Val="Black"
Type="DropDown" />
<sd DetailId="120" Name="Color" Val="Blue"
Type="DropDown" />
<sd DetailId="121" Name="Color" Val="Red"
Type="DropDown" />
</csd>
</root>
Is there a way to change the select tag from <select>
to <select> so the parser won't give me an
error?
Thanks.
--- "Passin, Tom" <tpassin@xxxxxxxxxxxx> wrote:
> [Juan Carlos Gonzalez]
> >
> > This is my template. I'm trying to generate input
> tags
> > based on the type read from the xml file.
> >
>
> Just guessing at the xml file you want to transform,
> I do not think that
> your stylesheet would quite do what you want even if
> you could have
> gotten away with the ill-formed construction. Of
> course, I do not know
> whether all the options would be listed in order
> with no other inputs
> mixed in.
>
> I take it that you will have a list of elements
> whose Type attribute is
> "dropdown", whose name is to be the name of the
> select element, and
> whose Val atribute is to become the value of an
> option. There should be
> just one select element for such a group of options,
> and you want to
> output it when you encounter the first element with
> a new name. Right?
>
> It would be better if you could change your xml
> format to have all the
> options contained in a container element. Then
> things would be easier.
> Then, for each container you would create a select
> element. Can you do
> change the format?
>
> Otherwise, you could proceed like this (a brute
> force approach that
> makes minimal changes to what you already had) -
> depending, of course,
> on what is really in the xml file:
>
> >
> > <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:for-each select="key('specs_key',
> @Name)[@Type =
> 'DropDown']">
> <option value='{@Val}'><xsl:value-of
> select="@Val"/></option>
> </xsl:for-each>
> </select>
> > </xsl:if>
>
> > <xsl:for-each select="key('specs_key',
> @Name)[not(@Type
> ='DropDown')]">
> > <xsl:choose>
> > <xsl:when test="@Type = 'DropDown'">
> > </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: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
> >
> >
>
> 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 | [xsl] word wrapping using fo-xsl, Deborah Aleyne Lapey |
| RE: [xsl] XML in IE6, Mike Ferrando | Date | RE: [xsl] XML in IE6, Clay Leeds |
| Month |