Subject: Re: [xsl] Outputing the same value-of for different nodes From: "Liron" <magilam@xxxxxxxxxxxxxxxx> Date: Wed, 22 Feb 2006 17:47:34 +0100 |
Thank you Liron
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,output
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;)I
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 wouldhave 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 -> |
---|---|---|
Re: [xsl] Outputing the same value-, Jay Bryant | Thread | Re: [xsl] Outputing the same value-, Jay Bryant |
[xsl] regular expression issue in X, Paul Hermans | Date | Re: [xsl] regular expression issue , David Carlisle |
Month |