|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: recreating elements with attributes
Thanks. Actually I needed to do more than just copy, I needed to change some attributes as well. Your <xsl:attribute> hint gave me my answer: <xsl:template match="CDRS/TOLL_CDR"> <TOLL_CDR> <xsl:for-each select="@*"> <xsl:choose> <xsl:when test="name()='DIVISION'"> <!-- do special logic here, such as rename an attribute --> <xsl:attribute name="mydivision"> <xsl:value-of select="." /> </xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:copy/> </xsl:otherwise> </xsl:choose> </xsl:for-each> </TOLL_CDR> </xsl:template> Thanks everyone who responded. -----Original Message----- From: J.Pietschmann [mailto:j3322ptm@xxxxxxxx] Sent: Tuesday, February 10, 2004 5:45 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: recreating elements with attributes Gruenewald, Terry wrote: > I'm performing an XML to XML transformation and I need to make some > modifications to a few attributes during this transformation. I've tried the > following code, but I'm stuck as to how to print the "<" sign and ">" sign. > I've tried using the < and >, but the transformation process just then > litterally puts in < and >. > > this code loops through all attributes for the TOLL_CDR node. The problem is > when I try and put "<TOLL_CDR" in there, because the parser yells about the > "<" sign in front of it. Any thoughts? > > <xsl:template match="//CDRS/TOLL_CDR"> > > > <TOLL_CDR > <xsl:text> > </xsl:text> > <xsl:for-each select="@*"> > <xsl:value-of select="name()" />="<xsl:value-of select="." />"<xsl:text> > </xsl:text> > </xsl:for-each> > /> > > </xsl:template> Ouch. XSLT is *not* a macro language, or whatever you expect. XSLT is a language which describes a transformation from a source tree of nodes into a result tree. The nodes in both trees represent mainly XML elements, attributes and text. You have really to get this: you *don't* create a string with angle brackets. You create a result tree. After this has sunken in, you might realize that you have to create attributes in the result tree either with xsl:attribute or by copying them from the source tree in an appropriate context. In your case, you are basically looking for the generic copy template. Somewhat more specific <xsl:template match="CDRS/TOLL_CDR"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> It pays off to get one of the introductionary books about XSLT and read the first few chapters, which should explain in detail what is going on here. J.Pietschmann XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list 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
|






