XSLT: Somme des attributs propres à la base de la valeur sur un autre attribut de nom
J'ai le document XML suivant (fournie par une autre partie)
<transactions>
<transaction TaxAType="11" TaxAValue="111" TaxBType="2" TaxBValue="222" TaxCType="3" TaxCValue="333"/>
<transaction TaxAType="11" TaxAValue="111" TaxBType="2" TaxBValue="222" TaxCType="3" TaxCValue="333"/>
</transactions>
Je voudrais écrire un document XSLT qui aurait pour effet de transformer ces lignes et la somme de l'Impôt*Valeur si la Taxe correspondante*Type = '11' par exemple.
Est-ce quelque chose de possible sans l'aide d'un modèle?
nom(), substring(), etc. fonctions dans la requête XQuery?
Quelles sont vos pensées sur cette question?
Quel doit être le résultat? Un numéro unique? XML avec les totaux? Vous dites "Fiscales*Type = '11', par exemple". Est-ce à dire que dans votre exemple de XML, le TaxBValue et TaxCValue ne serait pas être additionnés?
Bien l'idée, c'est que je voudrais stocker la Somme de toutes les valeurs pour un type de 10 dans un attribut de mon transformé document. Par exemple <lot gstAmount=5433"> transformée de transactions-éléments </lot>
Qui ne clarifie pas la question beaucoup. D'où vient le type "10" viennent de cette époque? Comment êtes-vous arrivé à la suite 5433? Pourriez-vous décrire ce que vous voulez faire, dans le détail? Compte tenu de l'échantillon XML que vous mettez dans votre question, ce qui devrait être la sortie?
Donc, si la TPS est égal à la taxe de type 11 puis le gstAmount serait 222. Le problème est que l'impôt de 11 type pourraient être stockées dans TaxAType et/ou TaxBType et/ou TaxCType
Je vois maintenant. Merci pour la clarification. J'ai posté une solution générique ci-dessous dans le cas où vous êtes intéressé.
Bien l'idée, c'est que je voudrais stocker la Somme de toutes les valeurs pour un type de 10 dans un attribut de mon transformé document. Par exemple <lot gstAmount=5433"> transformée de transactions-éléments </lot>
Qui ne clarifie pas la question beaucoup. D'où vient le type "10" viennent de cette époque? Comment êtes-vous arrivé à la suite 5433? Pourriez-vous décrire ce que vous voulez faire, dans le détail? Compte tenu de l'échantillon XML que vous mettez dans votre question, ce qui devrait être la sortie?
Donc, si la TPS est égal à la taxe de type 11 puis le gstAmount serait 222. Le problème est que l'impôt de 11 type pourraient être stockées dans TaxAType et/ou TaxBType et/ou TaxCType
Je vois maintenant. Merci pour la clarification. J'ai posté une solution générique ci-dessous dans le cas où vous êtes intéressé.
OriginalL'auteur Daniel St-Jean | 2013-03-11
Vous devez vous connecter pour publier un commentaire.
Ont un look à la suite de XSLT:
Il calcule la somme de TaxAValue pour les nœuds avec TaxAType = 11 et la somme de tous les Impôts?Valeur pour les nœuds avec les Impôts?Type = 11.
OriginalL'auteur kamituel
Ici est un peu verbeux, mais l'approche générale:
Ce doit être capable de gérer n'importe quel nombre de
Tax*Type
s (tant que * est un caractère unique) et le type désiré peut être transmis en tant que paramètre.OriginalL'auteur JLRishe
Ce xml n'est pas dans un format très adapté pour remplir le type de traitement que vous voulez faire.
votre meilleure option est d'utiliser javascript ou une autre langue avec les fonctionnalités XML (C#, Java,etc etc) pour extraire les détails dont vous avez besoin.
avec javascript, il est possible de trouver un attribut de l'Impôt*Type=11 et ensuite obtenir la valeur de l'attribut suivant
OriginalL'auteur DeadlyDan
somme(transactions/transaction[@TaxAType='11']/@TaxAValue | @TaxBvalue | @ TaxCvalue)
OriginalL'auteur titan.hi3