Subject: Re: [xsl] Design question From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Wed, 10 Jul 2002 09:46:42 +0100 |
Hi Antonio, > You could do what you say, but why not doing the following: > > <xsl:template match="test[@type='positive']"> > <da:Positive name="@name"> > <xsl:for-each select="param"> > <xsl:choose> > <xsl:when test="starts-with(@name,'p')"> > <xsl:attribute name="{@name}"><xsl:value-of > select="."/></xsl:attribute> > </xsl:when> > <xsl:otherwise> > <xsl:element name="da:Date"> > <xsl:attribute name="number"><xsl:value-of > select="substring(@name,4)"/></xsl:attribute> > <xsl:attribute name="value"><xsl:value-of > select="."/></xsl:attribute> > </xsl:element> > </xsl:otherwise> > </xsl:choose> > </xsl:for-each> > </da:Positive> > </xsl:template> The reason Jay couldn't use that is that for some arrangements of parameters this would lead to attributes being added after child elements have already been added to the da:Positive element, which is an error in XSLT. For example, with the input specified: <test type="positive" name="Test 1"> <param name="p1">123</param> <param name="date1">July 9</param> <param name="p2">false</param> </test> Your code is equivalent to: <da:Positive name="@name"> <!-- [sic -- forgot {}s] --> <xsl:attribute name="p1">123</xsl:attribute> <xsl:element name="da:Date"> <xsl:attribute name="number">1</xsl:attribute> </xsl:element> <xsl:attribute name="p2">false</xsl:attribute> </da:Positive> Processors that don't halt when they encounter an attribute being added after element content ignore the attribute, so either you get an error or erroneous output; either way it's not much good. Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Design question, Antonio Fiol | Thread | Re: [xsl] Design question, Antonio Fiol |
RE: [xsl] How I can include javscri, Andrew Welch | Date | Re: [xsl] Design question, Antonio Fiol |
Month |