[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: elements to attributes
Hi Harsha,
At 02:23 PM 2/28/2003, you wrote: and I need my result XML document to have all the attributes in each level converted to elements at same level Can there be a generic xsl which looks at all the nodes and does this? Uh-huh... There's a template described in the XSL Recommendation (http://www.w3.org/TR/xslt) as an "identity template", because it matches any node and just copies it, then picks its attributes and children to do the same: <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> You need to split this in two: one to handle all nodes but attributes, the other to handle attributes: <xsl:template match="node()"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> Except the one for attributes should have instructions to make an element instead: <xsl:template match="@*"> <xsl:element name="{name()}"> <xsl:value-of select="."/> </xsl:element> </xsl:template> But if you try this out, you really should study up on the processing model (templates and apply-templates, and the default child:: axis) to make sure you understand it. (Once you understand the technique, you also will know how to extend it, for example to move things around or change names -- or add things.) The identity template (find it in the list archives under identity template or identity transformation, it's a FAQ too) is also the solution to the other problem you have posted. You may have already gotten a solution, or ask again if you need to and someone will give you a hint. Cheers, Wendell
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
|