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