Exemple de règles avancées XML : Sélectionner un nœud particulier lorsque plus d'un nœud correspond après avoir utilisé une règle standard

Lorsque vous utilisez une règle standard pour un champ, par exemple, il pourrait y avoir plusieurs nœuds qui correspondent au XPath, vous laissant choisir parmi plusieurs candidats. Vous pouvez créer une règle avancée pour spécifier la bonne.

Dans cet exemple, la règle standard pour une facture Svefaktura a généré ce XPath pour le champ Identificateur du fournisseur : /Invoice/SellerParty/Party/Partyidentification/ID, et par conséquent, la boîte de dialogue de mappage indique qu'il existe trois instances de ce chemin dans la facture après avoir cliqué sur Extraire pour vérifier les résultats.

  1. Sélectionnez le champ Identificateur dans la catégorie Fournisseur de l'onglet Champs du Mappeur XML (sur la partie droite de la fenêtre).
  2. 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.

  3. 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, développez le nœud Invoice.
  4. Recherchez et sélectionnez le sous-nœud qui représente le champ Identificateur pour le fournisseur (c'est-à-dire /Invoice/SellerParty/Party/Partyidentification/ID dans cet exemple).
  5. Cliquez sur Sélectionner.
  6. Sélectionnez Aucune condition : Correspond à la fois à vrai et à faux sous Conditions à utiliser pour travailler au milieu de l'écran.
  7. Sélectionnez Utiliser la valeur à partir du nœud XML.
  8. Dans le champ ci-dessous, sélectionnez le nœud pour la valeur à utiliser (pour les factures Svefaktura, le nœud serait cac:ID). Vous pouvez avoir besoin de développer le nœud qui est affiché si le nœud à sélectionner est un sous-nœud.
  9. Cliquez sur Ajouter.
  10. Sélectionnez Utiliser XSL à gauche en bas de la fenêtre.
  11. 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:SellerParty/cac:Party/cac:PartyIdentification/cac:ID">
          <xsl:value-of select="."/>   </xsl:for-each>
    </xsl:template>
  12. Déplacez le contenu de l'attribut select de l'élément <xsl:for-each> (ligne surlignée ci-dessus dans la deuxième ligne du code) vers l'attribut select de l'élément <xsl:value-of> dans la ligne suivante afin qu'il ressemble à ce qui suit. Ajoutez [2] après PartyIdentification pour indiquer que vous souhaitez utiliser la deuxième instance du fichier. Supprimez également l'élément <xsl:for-each> avant et après le texte en surbrillance d'origine afin que le code ressemble à ceci :
    <xsl:template match="/">
          <xsl:value-of select="/x:Invoice/cac:SellerParty/cac:Party/cac:PartyIdentification[2]/cac:ID"/>
    </xsl:template>
  13. 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).
  14. Déterminez si les modifications doivent s'appliquer à toutes les factures ou uniquement à celles de la définition de facture XML actuelle. Cliquez sur Enregistrer la définition XML pour n'enregistrer les modifications que pour la Définition de facture XML actuelle (c'est-à-dire le fournisseur 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.