xsl-list
[Top] [All Lists]

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

2010-11-06 12:07:33
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(_dot_)Honnen(_at_)gmx(_dot_)de] 
Enviado el: Sábado, 06 de Noviembre de 2010 11:38 a.m.
Para: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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[(_at_)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/infocaja"/>
     </xsl:copy>
   </xsl:template>

</xsl:stylesheet>

-- 

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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--