Subject: Re: if-questioning between two nodes inside an for-each-loop From: Gary L Peskin <garyp@xxxxxxxxxxxx> Date: Fri, 15 Sep 2000 08:16:56 -0700 |
"Matthiessen, Armin" wrote: > > Hi all, > > i have the following problem: > > inside from a HTML-side i want show a select box with content from the tags > "single". > This box should be a pre-selection to the content of the tag "choose". To > find out, which > tag is pre-selected i try it with a if-question between the node in den > variable-definition > an the node inside the "for-each"-loop. But i don't get a result from the > if-clause. > > Why? > How can i get a solution? > > xml-part: > > <cars> > <single>BMW</single> > <single>VW</single> > <single>MERCEDES</single> > <single>AUDI</single> > > <choose>VW</choose> > </cars> > > xsl-part: > > <?xml version="1.0" encoding="ISO-8859-1"?> > <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="1.0"> > <xsl:param name="lang" select="en"/> > <xsl:template match="/"> > > <html> > <head> > </head> > <body> > <h1>The choosed car is:</h1> > <select name="CARS"> > > <xsl:variable name="CHOOSE"> > <xsl:value-of select="cars/choose"/> > </xsl:variable> > > <xsl:for-each select="cars/single"> > <option> > <xsl:attribute name="value"> > <xsl:value-of select="."/> > </xsl:attribute> > <xsl:value-of select="."/> > > <xsl:if test=". = CHOOSE"> > <xsl:attribute name="selected"> > </xsl:attribute> > </xsl:if> > </option> > > </xsl:for-each> > </select> > </body> > </html> > </xsl:template> > </xsl:transform> > > Armin Armin -- Change <xsl:value-of select="."/> <xsl:if test=". = CHOOSE"> <xsl:attribute name="selected"> </xsl:attribute> </xsl:if> to <xsl:if test=". = $CHOOSE"> <xsl:attribute name="selected">selected</xsl:attribute> </xsl:if> <xsl:value-of select="."/> 1. You must specify xsl:attribute immediately after instantiating the <option> literal result element. After instantiating the <option> element, xsl:attributes must be specified before any child nodes are added to the <option> element or they will have no effect. So, you need to move your <option> element contents, namely the value-of until after the attribute. 2. Use a $ before CHOOSE to specify that CHOOSE is a variable. 3. To produce well-formed X(HT)ML, the value of the selected attribute should be "selected". The output method processor should reduce this to just the attribute name (without a value) when outputting html. HTH, Gary XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: if-questioning between two node, David Carlisle | Thread | RE: if-questioning between two node, Don Bruey |
RE: Problem with ignoring system ID, Paul Grosso | Date | Re: if-questioning between two node, David Carlisle |
Month |