Skip to content

Instantly share code, notes, and snippets.

@hpcorona
Created August 13, 2014 19:02
Show Gist options
  • Save hpcorona/33536e2ff448f69a7b47 to your computer and use it in GitHub Desktop.
Save hpcorona/33536e2ff448f69a7b47 to your computer and use it in GitHub Desktop.
Genera la cadena original de los diferentes comprobantes que se encuentran en un XML listo para ser enviado por WebService. No es necesario quitar los prefijos. Genera 1 cadena original por linea (separado por enters) por cada comprobante
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:oxml="http://www.ventanillaunica.gob.mx/cove/ws/oxml/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="no"/>
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="wsse:Security"></xsl:template>
<xsl:template match="oxml:solicitarRecibirCoveServicio" >
<xsl:apply-templates select="oxml:comprobantes" />
</xsl:template>
<xsl:template match="oxml:solicitarRecibirRelacionFacturasIAServicio" >
<xsl:apply-templates select="oxml:comprobantes" />
</xsl:template>
<xsl:template match="oxml:solicitarRecibirRelacionFacturasNoIAServicio" >
<xsl:apply-templates select="oxml:comprobantes" />
</xsl:template>
<xsl:template match="oxml:comprobantes" ><xsl:for-each select="current() "><xsl:if test="oxml:tipoOperacion and oxml:tipoOperacion != '' ">|<xsl:value-of select="oxml:tipoOperacion" /></xsl:if>
<xsl:if test="oxml:numeroFacturaOriginal and oxml:numeroFacturaOriginal != '' ">|<xsl:value-of select="oxml:numeroFacturaOriginal" /></xsl:if>
<xsl:if test="oxml:numeroRelacionFacturas and oxml:numeroRelacionFacturas != '' ">|<xsl:value-of select="oxml:numeroRelacionFacturas" />
</xsl:if><xsl:choose><xsl:when test="parent::oxml:solicitarRecibirCoveServicio">|0</xsl:when><xsl:otherwise>|1</xsl:otherwise></xsl:choose>
<xsl:if test="oxml:fechaExpedicion and oxml:fechaExpedicion!= '' ">|<xsl:value-of select="substring(oxml:fechaExpedicion, 1, 10)" /></xsl:if>
<xsl:if test="oxml:tipoFigura and oxml:tipoFigura != '' ">|<xsl:value-of select="oxml:tipoFigura" /></xsl:if>
<xsl:if test="oxml:observaciones and oxml:observaciones != '' ">|<xsl:value-of select="oxml:observaciones" /></xsl:if>
<xsl:for-each select="oxml:rfcConsulta">|<xsl:value-of select="current()" /></xsl:for-each>
<xsl:for-each select="oxml:patenteAduanal">|<xsl:value-of select="current()" /></xsl:for-each>
<xsl:choose><xsl:when test="parent::oxml:solicitarRecibirCoveServicio">
<xsl:apply-templates select="oxml:factura"/>
<xsl:apply-templates select="oxml:emisor"/>
<xsl:apply-templates select="oxml:destinatario"/>
<xsl:apply-templates select="oxml:mercancias"/>
</xsl:when>
<xsl:when test="parent::oxml:solicitarRecibirRelacionFacturasIAServicio">
<xsl:apply-templates select="oxml:emisor"/>
<xsl:apply-templates select="oxml:destinatario"/>
<xsl:for-each select="oxml:facturas">
<xsl:apply-templates select="current() "/>
<xsl:apply-templates select="oxml:mercancias"/>
</xsl:for-each>
</xsl:when>
<xsl:when test="parent::oxml:solicitarRecibirRelacionFacturasNoIAServicio">
<xsl:for-each select="oxml:facturas">
<xsl:apply-templates select="current() "/>
<xsl:apply-templates select="oxml:emisor"/>
<xsl:apply-templates select="oxml:destinatario"/>
<xsl:apply-templates select="oxml:mercancias"/>
</xsl:for-each>
</xsl:when>
</xsl:choose>|
</xsl:for-each></xsl:template>
<xsl:template match="oxml:factura">
<xsl:if test="oxml:subdivision and oxml:subdivision != '' ">|<xsl:value-of select="oxml:subdivision" /></xsl:if>
<xsl:if test="oxml:certificadoOrigen and oxml:certificadoOrigen != '' ">|<xsl:value-of select="oxml:certificadoOrigen" /></xsl:if>
<xsl:if test="oxml:numeroExportadorAutorizado and oxml:numeroExportadorAutorizado != '' ">|<xsl:value-of select="oxml:numeroExportadorAutorizado" /></xsl:if>
</xsl:template>
<xsl:template match="oxml:facturas">
<xsl:if test="oxml:numeroFactura and oxml:numeroFactura != '' ">|<xsl:value-of select="oxml:numeroFactura" /></xsl:if>
<xsl:if test="oxml:subdivision and oxml:subdivision != '' ">|<xsl:value-of select="oxml:subdivision" /></xsl:if>
<xsl:if test="oxml:certificadoOrigen and oxml:certificadoOrigen != '' ">|<xsl:value-of select="oxml:certificadoOrigen" /></xsl:if>
<xsl:if test="oxml:numeroExportadorAutorizado and oxml:numeroExportadorAutorizado != '' ">|<xsl:value-of select="oxml:numeroExportadorAutorizado" /></xsl:if>
</xsl:template>
<xsl:template match="oxml:emisor">
<xsl:if test="oxml:tipoIdentificador and oxml:tipoIdentificador != '' ">|<xsl:value-of select="oxml:tipoIdentificador" /></xsl:if>
<xsl:if test="oxml:identificacion and oxml:identificacion != '' ">|<xsl:value-of select="oxml:identificacion" /></xsl:if>
<xsl:if test="oxml:apellidoPaterno and oxml:apellidoPaterno != '' ">|<xsl:value-of select="oxml:apellidoPaterno" /></xsl:if>
<xsl:if test="oxml:apellidoMaterno and oxml:apellidoMaterno != '' ">|<xsl:value-of select="oxml:apellidoMaterno" /></xsl:if>
<xsl:if test="oxml:nombre and oxml:nombre != '' ">|<xsl:value-of select="oxml:nombre" /></xsl:if>
<xsl:apply-templates select="oxml:domicilio"/>
</xsl:template>
<xsl:template match="oxml:destinatario">
<xsl:if test="oxml:tipoIdentificador and oxml:tipoIdentificador != '' ">|<xsl:value-of select="oxml:tipoIdentificador" /></xsl:if>
<xsl:if test="oxml:identificacion and oxml:identificacion != '' ">|<xsl:value-of select="oxml:identificacion" /></xsl:if>
<xsl:if test="oxml:apellidoPaterno and oxml:apellidoPaterno != '' ">|<xsl:value-of select="oxml:apellidoPaterno" /></xsl:if>
<xsl:if test="oxml:apellidoMaterno and oxml:apellidoMaterno != '' ">|<xsl:value-of select="oxml:apellidoMaterno" /></xsl:if>
<xsl:if test="oxml:nombre and oxml:nombre != '' ">|<xsl:value-of select="oxml:nombre" /></xsl:if>
<xsl:apply-templates select="oxml:domicilio"/>
</xsl:template>
<xsl:template match="oxml:domicilio">
<xsl:if test="oxml:calle and oxml:calle != '' ">|<xsl:value-of select="oxml:calle" /></xsl:if>
<xsl:if test="oxml:numeroExterior and oxml:numeroExterior != '' ">|<xsl:value-of select="oxml:numeroExterior" /></xsl:if>
<xsl:if test="oxml:numeroInterior and oxml:numeroInterior != '' ">|<xsl:value-of select="oxml:numeroInterior" /></xsl:if>
<xsl:if test="oxml:colonia and oxml:colonia != '' ">|<xsl:value-of select="oxml:colonia" /></xsl:if>
<xsl:if test="oxml:localidad and oxml:localidad != '' ">|<xsl:value-of select="oxml:localidad" /></xsl:if>
<xsl:if test="oxml:municipio and oxml:municipio != '' ">|<xsl:value-of select="oxml:municipio" /></xsl:if>
<xsl:if test="oxml:entidadFederativa and oxml:entidadFederativa != '' ">|<xsl:value-of select="oxml:entidadFederativa" /></xsl:if>
<xsl:if test="oxml:pais and oxml:pais != '' ">|<xsl:value-of select="oxml:pais" /></xsl:if>
<xsl:if test="oxml:codigoPostal and oxml:codigoPostal != '' ">|<xsl:value-of select="oxml:codigoPostal" /></xsl:if>
</xsl:template>
<xsl:template match="oxml:mercancias">
<xsl:for-each select="current()">
<xsl:if test="oxml:descripcionGenerica and oxml:descripcionGenerica != '' ">|<xsl:value-of select="oxml:descripcionGenerica" /></xsl:if>
<xsl:if test="oxml:claveUnidadMedida and oxml:claveUnidadMedida != '' ">|<xsl:value-of select="oxml:claveUnidadMedida" /></xsl:if>
<xsl:if test="oxml:cantidad and oxml:cantidad != '' ">|<xsl:value-of select="oxml:cantidad" /></xsl:if>
<xsl:if test="oxml:tipoMoneda and oxml:tipoMoneda != '' ">|<xsl:value-of select="oxml:tipoMoneda" /></xsl:if>
<xsl:if test="oxml:valorUnitario and oxml:valorUnitario != '' ">|<xsl:value-of select="oxml:valorUnitario" /></xsl:if>
<xsl:if test="oxml:valorTotal and oxml:valorTotal != '' ">|<xsl:value-of select="oxml:valorTotal" /></xsl:if>
<xsl:if test="oxml:valorDolares and oxml:valorDolares != '' ">|<xsl:value-of select="oxml:valorDolares" /></xsl:if>
<xsl:apply-templates select="oxml:descripcionesEspecificas"/>
</xsl:for-each>
</xsl:template>
<xsl:template match="oxml:descripcionesEspecificas">
<xsl:for-each select="current()">
<xsl:if test="oxml:marca and oxml:marca != '' ">|<xsl:value-of select="oxml:marca" /></xsl:if>
<xsl:if test="oxml:modelo and oxml:modelo != '' ">|<xsl:value-of select="oxml:modelo" /></xsl:if>
<xsl:if test="oxml:subModelo and oxml:subModelo != '' ">|<xsl:value-of select="oxml:subModelo" /></xsl:if>
<xsl:if test="oxml:numeroSerie and oxml:numeroSerie != '' ">|<xsl:value-of select="oxml:numeroSerie" /></xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment