Ejemplo de regla XML avanzada: modificar un valor de campo XML extraído con XSL

En este ejemplo, el campo Kofax ReadSoft Invoices DeliveryDate está capturado correctamente en una factura Svefaktura pero en el formato "2011-06-01 T00:00". Se puede crear una regla avanzada para que el valor mostrado se limite a "2011-06-01":

  1. Seleccione el campo DeliveryDate en la categoría 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.

  2. En la sección de selección de nodo XML de Reglas avanzadas, hacia la parte superior de la ficha Reglas de asignación de campos que se muestra en la parte izquierda de la ventana, despliegue el nodo Invoice.
  3. Acceda y seleccione el subnodo que representa el campo DeliveryDate (que es Invoice/cac:Delivery/cbc:ActualDeliveryDate en el estándar de factura XML Svefaktura), y haga clic en Seleccionar.
  4. Seleccione Ninguna condición: Coincide tanto verdadera como falsa en Condiciones con las que trabajar en la parte central de la pantalla.
  5. Seleccione Utilizar valor del nodo XML.
  6. Seleccione el nodo para el valor a utilizar en el recuadro más abajo (para facturas Svefaktura, sería cbc:ActualDeliveryDate).

Es posible que tenga que desplegar el nodo que se muestra, si el nodo que necesita seleccionar es un subnodo.

  1. Haga clic en Añadir.
  2. Seleccione Utilizar XSL de la izquierda en la parte inferior de la ventana.
  3. Haga clic en el botón Importar de reglas avanzadas y añada el código XSL que representa la regla anterior seleccionada al recuadro de código de más abajo. Este sería el código para facturas Svefaktura:
    <xsl:template match="/">
       <xsl:for-each select="/x:Invoice/cac:Delivery/cbc:ActualDeliveryDateTime">
          <xsl:value-of select="."/>   </xsl:for-each>
    </xsl:template>
  4. Añada substring-before(.,'T') a la tercera fila para que tenga este aspecto:

    <xsl:value-of select="substring-before(.,'T')"/>   </xsl:for-each>

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.

Funciones de subcadenas

  • Substring-before(source, str) devuelve la parte del origen que va delante de la primera aparición de str.

Si no se encuentra str, el resultado es una cadena vacía.

En este ejemplo, el origen es «2011-06-01 T00:00» por lo que el resultado de añadir substring-before(.,'T') es 2011-06-01, porque eso es lo que aparece antes de la primera instancia de 'T'.

  • Substring-after(source, str) devolvería la parte del origen que va después de la primera aparición de str.

Si no se encuentra str, el resultado es una cadena vacía.

Nota

Siempre que utilice XSL para obtener un valor deseado, asegúrese de probar la salida cuando los datos contengan caracteres especiales (como &).

Para mostrar caracteres especiales normalmente (un carácter ampersand, &, se mostraría como &, por ejemplo), añada <xsl:output method="text" /> al segmento XSL de esta forma.



Si no se añade este código, el ampersand se mostraría como &amp;.

Otros ejemplos de reglas XML avanzadas:

Corregir un nombre de campo mal escrito en relación a los datos principales

Aplicar formato a un valor 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 un nodo específico cuando más de un nodo coinciden después de utilizar una regla estándar

Seleccionar el nodo X si existe, y el nodo Y si no existe

Especificar un valor constante para un campo

Resume los datos de las líneas de artículos en forma de una nota en facturas de resumen

Traducir un valor XML a otro que Kofax ReadSoft Invoices entienda