<?xml version=“1.0” encoding=“utf-8”?> <xsl:stylesheet version=“1.0” xmlns:xsl=“www.w3.org/1999/XSL/Transform” xmlns:xs=“www.w3.org/2001/XMLSchema” xmlns:fn=“www.w3.org/2005/xpath-functions” xmlns:cce11=“www.sat.gob.mx/ComercioExterior11”>

<xsl:template match="cce11:ComercioExterior">
  <!--Manejador de nodos tipo ComercioExterior-->
  <xsl:call-template name="Requerido">
    <xsl:with-param name="valor" select="./@Version" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@MotivoTraslado" />
  </xsl:call-template>
  <xsl:call-template name="Requerido">
    <xsl:with-param name="valor" select="./@TipoOperacion" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@ClaveDePedimento" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@CertificadoOrigen" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@NumCertificadoOrigen" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@NumeroExportadorConfiable" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@Incoterm" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@Subdivision" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@Observaciones" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@TipoCambioUSD" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@TotalUSD" />
  </xsl:call-template>

  <!--  Iniciamos el manejo de los elementos hijo en la secuencia -->
  <xsl:apply-templates select="./cce11:Emisor" />
  <xsl:for-each select="./cce11:Propietario">
    <xsl:apply-templates select="."/>
  </xsl:for-each>
  <xsl:apply-templates select="./cce11:Receptor" />
  <xsl:for-each select="./cce11:Destinatario">
    <xsl:apply-templates select="."/>
  </xsl:for-each>
  <xsl:apply-templates select="./cce11:Mercancias" />
</xsl:template>

<xsl:template match="cce11:Emisor">
  <!--  Iniciamos el tratamiento de los atributos de cce11:Emisor-->
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@Curp" />
  </xsl:call-template>

  <xsl:apply-templates select="./cce11:Domicilio" />

</xsl:template>

<xsl:template match="cce11:Propietario">
  <!--  Tratamiento de los atributos de cce11:Propietario-->

  <xsl:call-template name="Requerido">
    <xsl:with-param name="valor" select="./@NumRegIdTrib" />
  </xsl:call-template>
  <xsl:call-template name="Requerido">
    <xsl:with-param name="valor" select="./@ResidenciaFiscal" />
  </xsl:call-template>

</xsl:template>

<xsl:template match="cce11:Receptor">
  <!--  Tratamiento de los atributos de cce11:Receptor-->

  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@NumRegIdTrib" />
  </xsl:call-template>
  <xsl:apply-templates select="./cce11:Domicilio" />

</xsl:template>

<xsl:template match="cce11:Destinatario">
  <!--  Tratamiento de los atributos de cce11:Destinatario-->
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@NumRegIdTrib" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@Nombre" />
  </xsl:call-template>
  <!--  Manejo de los nodos dependientes -->
  <xsl:for-each select="./cce11:Domicilio">
    <xsl:apply-templates select="."/>
  </xsl:for-each>
</xsl:template>

<xsl:template match="cce11:Mercancias">
 <!--  Iniciamos el manejo de los nodos dependientes -->
  <xsl:for-each select="./cce11:Mercancia">
    <xsl:apply-templates select="."/>
  </xsl:for-each>
</xsl:template>

<xsl:template match="cce11:Domicilio">
  <!--  Iniciamos el tratamiento de los atributos de cce11:Domicilio-->
  <xsl:call-template name="Requerido">
    <xsl:with-param name="valor" select="./@Calle" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@NumeroExterior" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@NumeroInterior" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@Colonia" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@Localidad" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@Referencia" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@Municipio" />
  </xsl:call-template>
  <xsl:call-template name="Requerido">
    <xsl:with-param name="valor" select="./@Estado" />
  </xsl:call-template>
  <xsl:call-template name="Requerido">
    <xsl:with-param name="valor" select="./@Pais" />
  </xsl:call-template>
  <xsl:call-template name="Requerido">
    <xsl:with-param name="valor" select="./@CodigoPostal" />
  </xsl:call-template>
</xsl:template>

<xsl:template match="cce11:Mercancia">
  <xsl:call-template name="Requerido">
    <xsl:with-param name="valor" select="./@NoIdentificacion" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@FraccionArancelaria" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@CantidadAduana" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@UnidadAduana" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@ValorUnitarioAduana" />
  </xsl:call-template>
  <xsl:call-template name="Requerido">
    <xsl:with-param name="valor" select="./@ValorDolares" />
  </xsl:call-template>
       <xsl:for-each select="./cce11:DescripcionesEspecificas">
    <xsl:apply-templates select="."/>
  </xsl:for-each>
</xsl:template>

  <xsl:template match="cce11:DescripcionesEspecificas">
    <xsl:call-template name="Requerido">
    <xsl:with-param name="valor" select="./@Marca" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@Modelo" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@SubModelo" />
  </xsl:call-template>
  <xsl:call-template name="Opcional">
    <xsl:with-param name="valor" select="./@NumeroSerie" />
  </xsl:call-template>
</xsl:template>

</xsl:stylesheet>