Subject: Re: [xsl] Outputing the same value-of for different nodes From: "Jay Bryant" <jay@xxxxxxxxxxxx> Date: Wed, 22 Feb 2006 10:39:31 -0600 |
If you use templates rather than for-each, this is a fairly natural operation for XSLT. Then you just need to apply the son template twice, thus: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:template match="tree"> <xsl:copy> <first> <xsl:apply-templates/> </first> <second> <xsl:apply-templates/> </second> </xsl:copy> </xsl:template> <xsl:template match="son"> <xsl:copy> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="value"> <xsl:copy> <xsl:value-of select="."/><position><xsl:value-of select="count(preceding::value) + 1"/></position> </xsl:copy> </xsl:template> </xsl:stylesheet> Jay Bryant Bryant Communication Services ----- Original Message ----- From: "Liron" <magilam@xxxxxxxxxxxxxxxx> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> Sent: Wednesday, February 22, 2006 10:19 AM Subject: [xsl] Outputing the same value-of for different nodes > Hello, > > I wanted to ask how to output the same value on different nodes without > effecting performance. Here's an example: > > original xml file: > > <tree> > <son><value>something1</value></son> > <son><value>something2</value></son> > <son><value>something3</value></son> > </tree> > > Lets assume I want to output something like this: > > <tree> > <first> > <son><value>something1><position>1</position></value></son> > <son><value>something2><position>2</position></value></son> > <son><value>something3><position>3</position></value></son> > </first> > <second> > <son><value>something1><position>1</position></value></son> > <son><value>something2><position>2</position></value></son> > <son><value>something3><position>3</position></value></son> > </second> > </tree> > > This is just an example so please don't question the need for such an output > ;) > > In my xslt I'd probably use a xsl:for-each select="/tree/son" and then > output the "value" node and "position()" under the "first" node but would I > have to write a > "xsl:for-each" again only output it for the "second" node or there's some > way of outputing the same value, lets say "position()", under different > output nodes? > > Thank you > Liron
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Outputing the same value-of f, Liron | Thread | Re: [xsl] Outputing the same value-, Liron |
RE: [xsl] Outputing the same value-, cknell | Date | [xsl] regular expression issue in X, Paul Hermans |
Month |