Nous traiterons l’exemple qui consiste à afficher le coût indirect de la commande dont la valeur de
« id_commande » est « com003 ».
Nous reproduisons le fragment du document XML ci-dessous.
Nous utilisons comme base la requête précédente de calcul d’une unité d’oeuvre pour une activité
donnée.
Nous y avons ajouté le prédicat nécessaire à parcourir le document XML à partir de la commande
« com003 » .
La requête se présente comme suit.
Fonctionnement de la requête.
En boucle FOR, nous déclarons les variables.
La variable « $commande » est liée au premier élément de la séquence « commande » du « context
node » ABC respectant le prédicat « id_commande » = « com003 ».
La variable « $akty » est liée au premier élément de la séquence « activite » qui est sélectionné si un
lien peut être établi avec l’élément de la séquence « commande ».
Le lien est effectif si la comparaison des attributs « id_activite » de l’élément activité et de
« id_aktivite » du premier élément de la séquence mesurage ayant pour « context node »
« $commande » abouti.
Si le lien n’est pas établi, une itération examine le second élément de la séquence « activite », etc…
La variable « $compoact » est liée au premier élément de la séquence « composition_activite » dont
le « context node » est $akty (qui est liée à « $commande » ).
La variable « $famy » est liée au premier élément de la séquence « composition_famille » de la
séquence « famille_cout » si un lien est établi.
Nous établissons un lien avec l’élément « activite » par comparaison des valeurs des attributs
« famille_cout/@id_famille_cout » et « $compoakt/@id_famille_kout ».
Le lien est établi si il y a concordance, sinon, il y a itération vers le second élément de la séquence
« famille_cout », pour une nouvelle évaluation.
La variable « $pcmn » accède au premier élément « imputation » du « context node »
« charge_indirecte » .
Un lien est établi avec la variable « $famy » par comparaison des valeurs des attributs
« imputation/@id_pcmn_imputation » à « $famy/@id_pcmn_fam ».
Une itération se produit pour le second élément « imputation » , etc…, tant qu’un lien n’a pas été
établi.
Return fourni une séquence de résultats: « montant_htva_impute » multiplié par « proportion_cf »
multiplié par « proportion » divisé par la somme de la valeur des attributs « mesurage/@quantite »
sélectionnés.
Nous devons enfin multiplier ce résultat par la somme de mesurages « mesurage/@quantite » se
rapportant à cette commande « com003 ».
Cette requête traitera les mesurages de la commande « com003 » identiquement, et générera l’erreur
que nous évoquions ci-dessus.
Le résultat de la requête annonce un coût indirect de 446,234 (Euro) pour cette commande.