Subject: [xsl] apply-templates issue From: footh <footh@xxxxxxxxx> Date: Tue, 6 Sep 2005 12:52:42 -0700 (PDT) |
Hello all, I am trying to convert xml to an html form. I can best show what my problem is by example. Take this xml: <xml-to-input> <MyFields> <Field1 type="string" > hello </Field1> <Field2 type="string" /> <Field3 type="string" select="1"> <option value="this">this</option> <option value="is">is</option> <option value="cool">cool</option> </Field3> <Field4 type="string" /> </MyFields> </xml-to-input> I would like it to create html like this: My Fields Field1 [input box] Field2 [input box] Field3 [select box with specified options] Field4 [input box] I am very close to getting this to work, but have one problem. Here are the relevant xsl templates I'm using: <xsl:template match="xml-to-input"> <xsl:apply-templates select="*" mode="xml-to-input" /> </xsl:template> <xsl:template match="*" mode="xml-to-input"> <tr> <td> <xsl:value-of select="local-name()"/> </td> <xsl:choose> <xsl:when test="@type"> <td> <xsl:choose> <xsl:when test="@select = 1"> <select> <xsl:attribute name="name"><xsl:value-of select="local-name()"/></xsl:attribute> <xsl:apply-templates select="option" mode="xml-to-input" /> </select> </xsl:when> <xsl:otherwise> <input type="text" size="35"> <xsl:attribute name="name"><xsl:value-of select="local-name()"/></xsl:attribute> <xsl:attribute name="value"><xsl:value-of select="normalize-space(.)"/></xsl:attribute> </input> </xsl:otherwise> </xsl:choose> </td> </xsl:when> <xsl:otherwise> <td> </td> </xsl:otherwise> </xsl:choose> </tr> <xsl:apply-templates select="*" mode="xml-to-input"/> </xsl:template> <xsl:template match="option" mode="xml-to-input"> <option> <xsl:attribute name="value"><xsl:value-of select="normalize-space(.)"/></xsl:attribute> <xsl:value-of select="normalize-space(.)"/> </option> </xsl:template> Sorry if the formatting of this XML is bad. The problem that occurs is when the select box is hit, I call an apply-templates to deal with the select "options". This works fine, except that at the end of the middle template, I use apply-templates again. This has the effect of calling the "option" template for a second time. I would've thought that after calling apply-templates for the "option" tags the first time, the "pointer" in XPath would move beyond them. Anyway, I guess I was wrong - I'm sure this is standard behavior. I am new to XSL and am looking for some insight to make this work. Thanks a bunch. -JF ______________________________________________________ Click here to donate to the Hurricane Katrina relief effort. http://store.yahoo.com/redcross-donate3/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Muenchian grouping in XSL, Thomas J. Sebestyen | Thread | Re: [xsl] apply-templates issue, Joris Gillis |
[xsl] Muenchian grouping in XSLT 2, Thomas J. Sebestyen | Date | Re: [xsl] generic sorting problem, Joris Gillis |
Month |