This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: copy single node once from one location to another


<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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]