[xsl] Full output all nodes depending on a conditional

Subject: [xsl] Full output all nodes depending on a conditional
From: "Jimenez, Luis" <Luis.Jimenez@xxxxxxxxx>
Date: Sun, 14 Nov 2010 11:35:37 -0500
Hi All,

I have to insert a node in a picking document depending on a condition of an
earlier document.

But when I get the output does not go all the documents, only the document
that it performed the condition (picking).

Working with xsl 1.0

What should I do?

XML File:

<?xml version="1.0" encoding="iso-8859-1"?>
 <spoolpd>
   <pd>
     <detfac>
        <blqcab>
           <numpedido>1006314098</numpedido>
           <lugar>BOGOTA</lugar>
        </blqcab>
        <pie>
           <linea1>693.85</linea1>
           <linea2>57.92</linea2>
           <linea3>635.93</linea3>
           <linea4>15.00</linea4>
        </pie>
     </detfac>
     <picking>
        <pagina>
           <cabecera>
             <esttrabalta>09-01-05-07</esttrabalta>
             <esttrabmedbaja></esttrabmedbaja>
           </cabecera>
        </pagina>
        <pagina>
	   <cabecera>
	     <esttrabalta>09-01-05-07</esttrabalta>
	     <esttrabmedbaja></esttrabmedbaja>
	   </cabecera>
        </pagina>
     </picking>
  </pd>
  <pd>
       <detfac>
          <blqcab>
             <numpedido>1006314098</numpedido>
             <lugar>BOGOTA</lugar>
          </blqcab>
          <pie>
             <linea1>10.85</linea1>
             <linea2>20.92</linea2>
             <linea3>30.93</linea3>
             <linea4>15.00</linea4>
          </pie>
       </detfac>
       <picking>
          <pagina>
             <cabecera>
               <esttrabalta>09-01-05-07</esttrabalta>
               <esttrabmedbaja></esttrabmedbaja>
             </cabecera>
          </pagina>
          <pagina>
  	   <cabecera>
  	     <esttrabalta>09-01-05-07</esttrabalta>
  	     <esttrabmedbaja></esttrabmedbaja>
  	   </cabecera>
          </pagina>
       </picking>
  </pd>
 </spoolpd>


My XSL 1.0 File:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">
<xsl:output method="xml" version="1.0" encoding="iso-8859-1" indent="yes"
cdata-section-elements="descrip"/>
<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 = 'lbel'] | pd"/>
</xsl:copy>
  </xsl:template>

  <xsl:template match="pd">
    <xsl:copy>
      <xsl:variable name="id" select="translate(detfac/pie/linea3,',','')"/>
     <xsl:if test="$id &gt; '500'">
        <xsl:apply-templates select="@* | picking"/>
      </xsl:if>
    </xsl:copy>
  </xsl:template>

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

</xsl:stylesheet>


Desired output:

<?xml version="1.0" encoding="iso-8859-1"?>
 <spoolpd>
   <pd>
     <detfac>
        <blqcab>
           <numpedido>1006314098</numpedido>
           <lugar>BOGOTA</lugar>
        </blqcab>
        <pie>
           <linea1>693.85</linea1>
           <linea2>57.92</linea2>
           <linea3>635.93</linea3>
           <linea4>15.00</linea4>
        </pie>
     </detfac>
     <picking>
        <pagina>
           <cabecera>
             <esttrabalta>09-01-05-07</esttrabalta>
             <esttrabmedbaja></esttrabmedbaja>
             <advertencia>marca</advertencia>
           </cabecera>
        </pagina>
        <pagina>
	   <cabecera>
	     <esttrabalta>09-01-05-07</esttrabalta>
	     <esttrabmedbaja></esttrabmedbaja>
           <advertencia>marca</advertencia>
	   </cabecera>
        </pagina>
     </picking>
  </pd>
  <pd>
       <detfac>
          <blqcab>
             <numpedido>1006314098</numpedido>
             <lugar>BOGOTA</lugar>
          </blqcab>
          <pie>
             <linea1>10.85</linea1>
             <linea2>20.92</linea2>
             <linea3>30.93</linea3>
             <linea4>15.00</linea4>
          </pie>
       </detfac>
       <picking>
          <pagina>
             <cabecera>
               <esttrabalta>09-01-05-07</esttrabalta>
               <esttrabmedbaja></esttrabmedbaja>
               <advertencia>marca</advertencia>
             </cabecera>
          </pagina>
          <pagina>
  	   <cabecera>
  	     <esttrabalta>09-01-05-07</esttrabalta>
  	     <esttrabmedbaja></esttrabmedbaja>
           <advertencia>marca</advertencia>
  	   </cabecera>
          </pagina>
       </picking>
  </pd>
 </spoolpd>


Current Output: ====> DETFAC DOCUMENT MISSING

<?xml version="1.0" encoding="iso-8859-1"?>
 <spoolpd>
   <pd>
     <picking>
        <pagina>
           <cabecera>
             <esttrabalta>09-01-05-07</esttrabalta>
             <esttrabmedbaja></esttrabmedbaja>
             <advertencia>marca</advertencia>
           </cabecera>
        </pagina>
        <pagina>
	   <cabecera>
	     <esttrabalta>09-01-05-07</esttrabalta>
	     <esttrabmedbaja></esttrabmedbaja>
           <advertencia>marca</advertencia>
	   </cabecera>
        </pagina>
     </picking>
  </pd>
  <pd>
       <picking>
          <pagina>
             <cabecera>
               <esttrabalta>09-01-05-07</esttrabalta>
               <esttrabmedbaja></esttrabmedbaja>
               <advertencia>marca</advertencia>
             </cabecera>
          </pagina>
          <pagina>
  	   <cabecera>
  	     <esttrabalta>09-01-05-07</esttrabalta>
  	     <esttrabmedbaja></esttrabmedbaja>
           <advertencia>marca</advertencia>
  	   </cabecera>
          </pagina>
       </picking>
  </pd>
 </spoolpd>


thanks for the help.

Luis Fdo.

Current Thread