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 |