Exemple de règles avancées XML : Modifier une valeur de champ XML extraite avec XSL

Pour cet exemple, le champ Kofax ReadSoft Entrance DeliveryDate est capturé correctement dans une facture Svefaktura mais au format "2011-06-01 T00:00". Une règle avancée peut être créée pour que la valeur affichée soit limitée à « 2011-06-01 » :

  1. Sélectionnez le champ DeliveryDate dans la catégorie Champs de l'onglet Champs du Mappeur XML (sur la partie droite de la fenêtre).
    • Cliquez sur le bouton à la droite de la valeur :

      si aucune règle n'a été définie ou

      s'il existe déjà une règle pour le champ.

  2. Dans la section de sélection de nœud XML des Règles avancées vers le haut de l'onglet Règles de mappage de champ qui s'affiche à gauche de la fenêtre, développez le nœud Invoice.
  3. Recherchez et sélectionnez le sous-nœud-ce qui représente le champ DeliveryDate (qui est Invoice/cac:Delivery/cbc:ActualDeliveryDate dans la norme de facture XML Svefaktura), puis cliquez sur Sélectionner.
  4. Sélectionnez Aucune condition : Correspond à la fois à vrai et faux sous Conditions à utiliser pour travailler au milieu de l'écran.
  5. Sélectionnez Utiliser la valeur à partir du nœud XML.
  6. Sélectionnez le nœud pour la valeur à utiliser dans la case ci-dessous (pour les factures Svefaktura, le nœud serait cbc:ActualDeliveryDate).

Vous pouvez avoir besoin de développer le nœud qui est affiché si le nœud à sélectionner est un sous-nœud.

  1. Cliquez sur Ajouter.
  2. Sélectionnez Utiliser XSL à gauche en bas de la fenêtre.
  3. Cliquez sur le bouton Importer à partir de règles avancées pour ajouter le code XSL qui représente la règle sélectionnée ci-dessus pour la case du code ci-dessous. Ce serait le code pour les factures Svefaktura :
    <xsl:template match="/">
       <xsl:for-each select="/x:Invoice/cac:Delivery/cbc:ActualDeliveryDateTime">
          <xsl:value-of select="."/>   </xsl:for-each>
    </xsl:template>
  4. Ajoutez substring-before(.,'T') à la troisième ligne pour qu'elle ressemble à ceci :

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

Cliquez sur Extraire et examinez l'image pour vérifier les résultats. Si vous avez besoin de modifier une condition, il suffit de cliquer dessus dans les Règles appliquées pour mapper ce champ, puis de cliquer sur Suppr. pour la supprimer, de faire les modifications nécessaires pour corriger la règle, et de recliquer sur Ajouter pour ajouter la nouvelle règle. Si vous devez modifier une condition, le processus est identique (et si une règle est basée sur celle-ci, la règle est également supprimée si vous supprimez la condition).

Déterminez si les modifications doivent s'appliquer à tous les documents ou uniquement à ceux de la définition de facture XML actuelle. Cliquez sur Enregistrer la définition XML pour enregistrer la modification pour la définition de facture XML actuelle uniquement (c'est-à-dire l'expéditeur actuel). Cliquez sur Enregistrer le profil XML si vous souhaitez que la règle s'applique à toutes les factures XML qui correspondent au profil de facture XML quelle que soit la définition de facture XML.

À propos des fonctions de sous-chaîne

  • Substring-before(source, str) retourne la partie de la source qui vient après la première occurrence de str.

Si str est introuvable, le résultat sera une chaîne vide.

Dans cet exemple, la source est « 2011-06-01 T00:00 » pour que le résultat de l'ajout de substring-before(.,'T') soit 2011-06-01 puisque c'est la valeur qui vient après la première occurrence de 'T'.

  • Substring-after(source, str) retournerait la partie de la source qui vient après la première occurrence de str.

Si str est introuvable, le résultat sera une chaîne vide.

Remarque

Chaque fois que vous utilisez XSL pour obtenir une valeur désirée, assurez-vous de tester le résultat lorsque les données contiennent des caractères spéciaux (tels que &).

Pour afficher les caractères spéciaux normalement (le caractère esperluette, &, serait affiché comme & par exemple), ajoutez <xsl:output method="text" /> au fragment XSL de cette manière.



Si ce code n'est pas ajouté, l'esperluette serait affichée sous la forme « &amp; ».

Autres exemples de règles XML avancées :

Corriger un nom de champ mal orthographié en lien avec les données de référence

Formater une valeur XML extraite avec XSL

Supprimer les traits d'union (-) d'une valeur extraite

Sélectionner le nœud X sur la base du nœud Y (ou de l'attribut a)

Sélectionner un nœud particulier lorsque plus d'un nœud correspond après avoir utilisé une règle standard

Sélectionner le nœud X s'il existe et le nœud Y s'il n'existe pas

Préciser une valeur constante pour un champ

Récapituler les données des postes budgétaires sous forme de remarque dans des factures récapitulatives

Convertir une valeur XML en une valeur comprise par Kofax ReadSoft Entrance