Exemple : Un Invoice (une facture).
L’exemple SimpleInvoice.sps dans le dossier (Mes) Documents, C:\Documents and Settings\<username>\My Documents\Altova\StyleVision2025\StyleVisionExamples\Tutorial\Auto-Calculations\, démontre comment les calculs automatiques peuvent être utilisés aux fins suivantes :
•Compter les nœuds
•Sélectionner un nœud basé sur l’entrée de l’utilisateur de Authentic View
•Créer des calculs complexes
Dans le fichier d’exemple, les calculs automatiques ont été mis en surbrillance ayant une couleur d’arrière-fond jaune (voir la capture d’écran ci-dessous).
Compter les nœuds
Dans l’exemple SimpleInvoice, chaque produit dans la liste est numéroté selon sa position dans la liste des produits qu’un client a trié (Product 1, Product 2, etc.). Cette numérotation est obtenue avec un calcul automatique (capture d’écran ci-dessous).

Dans ce cas particulier, il suffirait que l’expression XPath position() obtienne la numérotation correcte. Une autre manière utile d’obtenir la position d’un nœud est de compter le nombre de frères qui précèdent et en ajouter un. L’expression XPath serait : count(preceding-sibling::Product)+1. Cette approche pourrait s’avérer utile dans des contextes où la fonction position() fest utilisée est difficile à employer ou ne peut pas être utilisée. Vous pouvez tester le calcul automatique dans le fichier d’exemple en supprimant les produits, et/ou en ajoutant et supprimant les nouveaux produits.
Sélectionner un nœud basé sur l’entrée de l’utilisateur
Dans l’exemple SimpleInvoice, la catégorie de produit (Book, CD, DVD ou Electronics) est contenue dans le nœud //Product/Category et affichée dans une zone de liste. Cette sélection est saisie dans le nœud //Product/Category dans le document XML. Un calcul automatique utilise ensuite cette valeur pour référencer une « table lookup » dans le document XML et identifier le nœud ayant le pourcentage T.V.A. pour cette catégorie de produit. L'expression XPath du calcul automatique est :
for $i in Category return /Invoice/Categories/Category[. = $i]/@rate.
Le pourcentage T.V.A. est affiché dans l’emplacement du calcul automatique dans la sortie. Dans l’exemple Invoice, la table lookup est stockée dans le même document XML comme données de la facture. Toutefois, une telle table peut aussi être stockée dans un document séparé, dans ce cas, elle serait accédée utilisant la fonction doc() de XPath 2.0. Notez que la valeur T.V.A: de différents produits est différente (Book=10%; CD=15%; DVD=15%; Electronics=20%) ; elle a été calculée par le calcul automatique.
Créer des calculs automatiques complexes
Le pourcentage de T.V.A., obtenu dans le calcul automatique décrit ci-dessous, est requis pour calculer le prix brut (prix net + montant T.V.A.) de chaque produit. La formule à utiliser pourrait être calculée comme suit :
Prix brut = prix net + montant T.V.A.
Puisque montant T.V.A. = Prix net * pourcentage T.V.A. div 100
Prix brut = prix net + (prix net * pourcentage T.V.A. div 100)
Le prix net d’un produit est obtenu du nœud PriceNet. Le pourcentage T.V.A. est calculé par un calcul automatique tel que décrit ci-dessus, il n’est pas contenu dans un nœud. Depuis que cette valeur ne peut pas être obtenue directement d’un nœud, elle doit être recalculée dans le prix brut du calcul automatique. L’expression XPath qu’il vous faut est la suivante :
for $i in Category return PriceNet + (PriceNet * /Invoice/Categories/Category[. = $i]/@rate) div 100)
L’expression XPath peut être consultée et éditée dans la fenêtre des Propriétés. Vous pouvez tester le calcul automatique pour le prix brut en changeant, dans le fichier XML, puis en rechargeant le SPS, soit le prix ou la catégorie de produit de tout produit. Notez que le prix brut (prix incluant la T.V.A.) du produit change également.
