|
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 |