|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Design question
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








