This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: copy single node once from one location to another
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Mon, 9 Sep 2002 09:23:21 +0100
- Subject: RE: [xsl] copy single node once from one location to another
- Reply-to: xsl-list at lists dot mulberrytech dot com
<xsl:variable name="data-nr" select="/mydoc/specials/data_nr"/>
<xsl:template match="a">
<a>
<xsl:copy-of select="@*"/>
<xsl:copy-of select="node()"/>
<xsl:if test="count(preceding-sibling::a)+1 = $data-text">
<xsl:copy-of select="$data_nr/../data-text"/>
</xsl:if>
</xsl:template>
Michael Kay
Software AG
home: Michael.H.Kay@ntlworld.com
work: Michael.Kay@softwareag.com
> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com] On Behalf Of
> Thomas Olausson
> Sent: 06 September 2002 22:46
> To: XSL-List@lists.mulberrytech.com
> Subject: [xsl] copy single node once from one location to another
>
>
> My XML file is being fed to an external system, which I don't
> have control of.
> It adds a "specials"-tag at the end like this: (hardcoded)
>
> <mydoc>
> <a id="ABC">
> <data>100</data>
> <data>101</data>
> </a>
> <a id="DEF">
> <data>200</data>
> <data>201</data>
> </a>
> <specials>
> <data_nr>2</data_nr>
> <data_text>300</data_text>
> </specials>
> </mydoc>
>
> I'd like to write a XSLT that moves the data_text to the
> corresponding index of "a", expressed in data_nr. In the
> above case, /mydoc/a[2]
>
> In the above example, I'd like the output to be
>
> <mydoc>
> <a id="ABC">
> <data>100</data>
> <data>101</data>
> </a>
> <a id="DEF">
> <data>200</data>
> <data>201</data>
> <data>300</data>
> </a>
> <specials>
> <data_nr>2</data_nr>
> <data_text>300</data_text>
> </specials>
> </mydoc>
> I just copied the 300-data to the 2nd 'a', because data_nr was 2.
>
> I know which fields to copy from, and I don't need any error
> checking (in case there are only one a , but data_nr=2 would
> never happen)
>
> I can't change the external system, and in XSLT, I haven't
> figured out to copy the line once. My XSLTs copies them one
> for every data item, even if I match correctly.
>
> /Thomas
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list