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

Cette rubrique contient deux exemples qui montrent comment reformater les valeurs extraites des factures XML.

Exemple 1 : Modification du format de l'année AAAA en AA

Cet exemple est pour le champ InvoicePeriodStart dans une facture Svefaktura :

  1. Sélectionnez le champ InvoicePeriodStart dans la section Champs sur 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. Sélectionnez Utiliser XSL dans l'angle inférieur gauche de l'écran.
  3. Cliquez sur Importer à partir de règles avancées Cet exemple suppose qu'aucune règle avancée n'a été définie pour ce champ. Une partie du code XSL initial qui est importante pour le champ sélectionné est ajoutée à la boîte de modification XSL.
    <xsl:template match="/">
       <xsl:for-each select="//x:Invoice/x:InvoicingPeriod/cbc:StartDateTime">
       </xsl:for-each>
    </xsl:template>
  4. Modifiez le code comme ceci pour changer le format de AAAA à AA.

Modifications requises ajoutées avec leur texte en gras :

<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>

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.

Exemple 2 : Suppression des caractères supplémentaires

Cet exemple supprimer les caractères inutiles de la valeur extraite pour le champ SupplierTaxNumber1 (par exemple, un numéro tel que SE556078650001 devient 5560786500).

  1. Sélectionnez le champ SupplierTaxNumber1 dans la section Champs sur l'onglet Champs du Mappeur XML (sur la partie droite de la fenêtre).
  2. Cliquez sur le bouton à droite de la valeur pour afficher le Champ règles de mappage pour le champ sur la gauche.
  3. Sélectionnez Utiliser XSL dans l'angle inférieur gauche de l'écran.
  4. Cliquez sur Importer à partir de règles avancées pour ajouter l'équivalent XSL des règles avancées ci-dessus à la boîte d'édition XSL ci-dessous ou pour ajouter une partie du code initial XSL pour commencer, si aucune règle avancée n'a été définie. (Voir à quoi il ressemble si aucune règle avancée n'est définie.)
    <xsl:template match="/">
       <xsl:for-each select="//x:Invoice/x:InvoicingPeriod/cbc:StartDateTime">
       </xsl:for-each>
    </xsl:template>
  5. Modifiez le code comme ceci pour changer le format de AAAA à AA.

Modifications requises ajoutées avec leur texte en gras :

<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>

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.

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

Modifier une valeur de champ 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