Ejemplo de regla XML avanzada: Aplicar formato a un valor XML extraído con XSL
Este tema contiene dos ejemplos que muestran cómo volver a formatear los valores extraídos de facturas XML.
Ejemplo 1: Cambiar el formato del año de YYYY a YY
Este ejemplo es para el campo InvoicePeriodStart de una factura Svefaktura:
- Seleccione el campo InvoicePeriodStart en la sección Campos de la ficha Campos del Asignador XML (en la parte derecha de la ventana).
- Haga clic en el botón a la derecha del valor:
si no se ha definido ninguna regla, o
si ya existe una regla para el campo.
- Haga clic en el botón a la derecha del valor:
- Seleccione Utilizar XSL en la parte inferior izquierda de la pantalla.
- Haga clic en Importar de reglas avanzadas. En este ejemplo se supone que no se han definido reglas avanzadas para este campo. Algún código XSL inicial relevante para el campo seleccionado se ha añadido al recuadro de edición de XSL.
<xsl:template match="/"> <xsl:for-each select="//x:Invoice/x:InvoicingPeriod/cbc:StartDateTime"> </xsl:for-each> </xsl:template>
- Cambie en el código de esta forma para cambiar de formato YYYY a YY.
Los cambios necesarios se han añadido con texto en negrita:
<xsl:template match="/">
<xsl:for-each select="//x:Invoice/x:InvoicingPeriod/cbc:StartDateTime">
<xsl:choose>
<xsl:when test="starts-with(.,'20')">
<xsl:value-of select="substring(.,3)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring(.,1)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
Haga clic en Extraer y revise la imagen para comprobar el resultado. Si necesita modificar la regla, debe hacer clic en ella en el recuadro Reglas aplicadas para asignar este campo, haga clic en Supr para eliminarla, realice los cambios necesarios para arreglar la regla y haga clic otra vez en Añadir para añadir la regla modificada. Si necesita modificar una condición, el proceso es el mismo (y si hay una regla basada en ella, la regla también se elimina al eliminar la condición).
Tenga en cuenta si los cambios se deben aplicar a todas las facturas o sólo a aquellas que tengan la definición de facturas de XML actual. Haga clic en Guardar definición XML para guardar el cambio solo para la definición actual de factura XML (esto es, el proveedor actual). Haga clic en Guardar el perfil XML si quiere que las reglas se apliquen a todas las facturas XML que coinciden con el perfil de factura de XML independientemente de la definición de factura XML.
Ejemplo 2: Eliminar caracteres adicionales
En este ejemplo se eliminan caracteres del valor extraído que no son necesarios, para el campo SupplierTaxNumber1 (esto es, un número como SE556078650001 se cambia a 5560786500).
- Seleccione el campo SupplierTaxNumber1 en la sección Campos de la ficha Campos del Asignador XML (en la parte derecha de la ventana).
- Haga clic en el botón
que se encuentra a la derecha del valor para visualizar las Reglas de asignación de campos del campo de la izquierda.
- Seleccione Utilizar XSL en la parte inferior izquierda de la pantalla.
- Haga clic en Importar de reglas avanzadas para agregar el XSL equivalente de las reglas avanzadas al recuadro de edición XSL de abajo, o para añadir algún código XSL inicial con el que empezar, si no se han definido reglas avanzadas. (Este es el aspecto si no se han definido reglas avanzadas.)
<xsl:template match="/"> <xsl:for-each select="//x:Invoice/x:InvoicingPeriod/cbc:StartDateTime"> </xsl:for-each> </xsl:template>
- Cambie en el código de esta forma para cambiar de formato YYYY a YY.
Los cambios necesarios se han añadido con texto en negrita:
<xsl:template match="/">
<xsl:for-each select="/x:Invoice/cac:SellerParty/cac:Party/cac:PartyTaxScheme">
<xsl:if test="cac:TaxScheme/cac:ID='VAT'">
<!-- <xsl:value-of select="CompanyID"/> -->
<xsl:choose>
<xsl:when test="starts-with(cac:CompanyID,'SE')">
<xsl:value-of select="substring(cac:CompanyID,3,10)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring(cac:CompanyID,1)"/>
</xsl:otherwise>
</xsl:choose>
<xsl:if>
<xsl:if test="TaxScheme/ID!='VAT'"></xsl:if>
</xsl:for-each>
</xsl:template>
Haga clic en Extraer y revise la imagen para comprobar el resultado. Si necesita modificar la regla, debe hacer clic en ella en el recuadro Reglas aplicadas para asignar este campo, haga clic en Supr para eliminarla, realice los cambios necesarios para arreglar la regla y haga clic otra vez en Añadir para añadir la regla modificada. Si necesita modificar una condición, el proceso es el mismo (y si hay una regla basada en ella, la regla también se elimina al eliminar la condición).
Tenga en cuenta si los cambios se deben aplicar a todas las facturas o sólo a aquellas que tengan la definición de facturas de XML actual. Haga clic en Guardar definición XML para guardar el cambio solo para la definición actual de factura XML (esto es, el proveedor actual). Haga clic en Guardar el perfil XML si quiere que las reglas se apliquen a todas las facturas XML que coinciden con el perfil de factura de XML independientemente de la definición de factura XML.
Otros ejemplos de reglas XML avanzadas:
Corregir un nombre de campo mal escrito en relación a los datos principales
Modificar un valor de campo XML extraído con XSL
Eliminar guiones (-) de un valor extraído
Seleccionar el nodo X según el nodo Y (o según el atributo a)
Seleccionar el nodo X si existe, y el nodo Y si no existe
Especificar un valor constante para un campo
Resumir los datos de las líneas de artículos en forma de una nota en una factura de resumen
Traducir un valor XML a otro que Tungsten ReadSoft Invoices entienda