Altova MapForce 2024 Enterprise Edition

Retourne la nombre d’items dans le cadre de la séquence des items actuellement en cours de traitement. Chose importante, la séquence des items est déterminée par le contexte de mappage actuel, tel que décrit dans l’exemple ci-dessous.

mf-func-xpath2-last

 

Langages

XQuery, XSLT 2.0, XSLT 3.0.

 

Exemple

Supposons que vous disposez du fichier XML de source suivant :

 

<Articles>
  <Article>      
    <Name>T-Shirt</Name>
    <SinglePrice>25</SinglePrice>
  </Article>
  <Article>      
    <Name>Socks</Name>
    <SinglePrice>2.30</SinglePrice>
  </Article>
  <Article>      
    <Name>Jacket</Name>
    <SinglePrice>57.50</SinglePrice>
  </Article>
</Articles>

 

Votre objectif est de copier des données dans un fichier XML avec un schéma différent. De plus, le décompte de tous les items doit être enregistré dans le fichier XML de cible. Cela peut être obtenu par un mappage comme celui ci-dessous :

mf-func-xpath2-last-example

Dans l’exemple ci-dessus, la fonction last retourne la position du dernier nœud dans le contexte de parent actuel et remplit l’attribut count avec la valeur 3.

 

<items count="3">
  <item>T-Shirt</item>
  <item>Pants</item>
  <item>Jacket</item>
</items>

 

Veuillez noter que la valeur 3 est la position du dernier item (et donc le décompte de tous les items) dans le contexte de mappage créé par la connexion entre Article et items. Si cette connexion n’existait pas, les items seraient toujours copiés vers la cible, mais la fonction last retournerait la valeur 1 de manière incorrecte, parce qu’il n’y aurait pas de parent context à itérer. (Plus précisément, elle utiliserait le contexte implicité par défaut créé entre les items racine des deux composants, ce qui produit une séquence de 1 item, et pas de 3 comme attendu).

 

Il est généralement conseillé d’utiliser la fonction count depuis la bibliothèque core au lieu de la fonction last, parce que cette première a un argument parent-context, ce qui vous permet de modifier le contexte de mappage explicitement.

© 2018-2024 Altova GmbH