RE: [xsl] [XSL 1.0] Copy node into of other

Subject: RE: [xsl] [XSL 1.0] Copy node into of other
From: "Jimenez, Luis" <Luis.Jimenez@xxxxxxxxx>
Date: Sat, 6 Nov 2010 13:07:08 -0400
Martin,

Works without problem, but when there is a PD node without the attribute
"marca" does not appear in the output, that changes must be made in the XSL to
display too.

Also if there are two nodes picking in PD, I get two nodes in the output
"infocaja", as could choose only the first "infocaja" of node picking.
.....
<femi>01/10/2010</femi>
<infocaja>1/1</infocaja>
<infocaja>2/2</infocaja>
.....


Thanks,

Luis Fdo.


-----Mensaje original-----
De: Martin Honnen [mailto:Martin.Honnen@xxxxxx]
Enviado el: Sabado, 06 de Noviembre de 2010 11:38 a.m.
Para: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Asunto: Re: [xsl] [XSL 1.0] Copy node into of other

Jimenez, Luis wrote:

> The XSL 1.0 not working. Sending the XML file, XSL file and the desired
output
>
> *** XML File:
>
> <?xml version="1.0" encoding="iso-8859-1"?>
> <spoolpd>
>   <pd marca="REAL">
>     <frmocs>
>       <blqcon>
>         <creg>15</creg>
>         <czon>1509</czon>
>         <tcon>02643714355</tcon>
>       </blqcon>
>     </frmocs>
>     <frmbd>
>       <pbd1>
>         <blqcab>
>            <nsec>1</nsec>
>            <chq />
>            <ccon>0303393</ccon>
>            <ncon>TORRES CABRERA, MARIA </ncon>
>         </blqcab>
>         <blqimp>
>            <txt>16</txt>
>            <txt />
>            <txt>415.06</txt>
>            <txt />
>            <txt />
>         </blqimp>
>         <detalle />
>     </pbd1>
>   </frmbd>
>   <picking>
>     <pagina>
>        <cabecera>
>           <numzona>09</numzona>
>           <tamcaja>Caja Grande</tamcaja>
>           <infocaja>1/1</infocaja>
>           <infopagina>1/1</infopagina>
>        </cabecera>
>        <linea>
>          <columna01 parameter="NONE">
>            <anaquel>A01A1</anaquel>
>            <cantidad>1</cantidad>
>            <descrip>CDR L`BEL 2009</descrip>
>          </columna01>
>          <columna02 parameter="NONE">
>            <anaquel />
>            <cantidad />
>            <descrip />
>          </columna02>
>        </linea>

The </pagina> is missing here and below:

>   </picking>
> </pd>

>   <picking>
>     <pagina>
>        <cabecera>
>           <numzona>10</numzona>
>           <tamcaja>Caja Grande</tamcaja>
>           <infocaja>1/2</infocaja>
>           <infopagina>1/1</infopagina>
>        </cabecera>
>        <linea>
>          <columna01 parameter="NONE">
>            <anaquel>A01A1</anaquel>
>            <cantidad>1</cantidad>
>            <descrip>CDR L`BEL 2009</descrip>
>          </columna01>
>          <columna02 parameter="NONE">
>            <anaquel />
>            <cantidad />
>            <descrip />
>          </columna02>
>        </linea>

Assuming you have well-formed XML with a pagina element then you can
solve that as follows:

<xsl:stylesheet
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
   version="1.0">

   <xsl:output indent="yes"/>
   <xsl:strip-space elements="*"/>

   <xsl:template match="@* | node()">
     <xsl:copy>
       <xsl:apply-templates select="@* | node()"/>
     </xsl:copy>
   </xsl:template>

   <xsl:template match="spoolpd">
     <xsl:copy>
       <xsl:apply-templates select="@* | pd[@marca = 'REAL']"/>
     </xsl:copy>
   </xsl:template>

   <xsl:template match="pd">
     <xsl:copy>
       <xsl:apply-templates select="@* | frmbd"/>
     </xsl:copy>
   </xsl:template>

   <xsl:template match="blqcab">
     <xsl:copy>
       <xsl:apply-templates
         select="@* |
                 node() |

parent::pbd1/parent::frmbd/following-sibling::picking[1]/pagina/cabecera/info
caja"/>
     </xsl:copy>
   </xsl:template>

</xsl:stylesheet>

--

	Martin Honnen
	http://msmvps.com/blogs/martin_honnen/

Current Thread