Reprise d'une application DOM en XSLT
Bonjour à tous,
j'aimerais savoir à quoi ressemblerait le code en xslt qui puisse obtenir le même résultat que celui-ci en java.
Merci d'avance pour vos réponses.
Code xml:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?xml version="1.0" encoding="ISO-8859-1" ?>
<liste>
<client nom="Jean Charles">
<transaction montant="500" />
<question>Quelle est la dernière marque?</question>
<transaction montant="1200" />
</client>
<client nom="Pierre Élisabeth">
<transaction montant="600" />
<transaction montant="800" />
<question>Où puis-je trouver le modèle 2002?</question>
<transaction montant="2000" />
</client>
</liste> |
code java:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| import org.w3c.dom.*;
import javax.xml.parsers.*;
public class Transactions {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder parser =
factory.newDocumentBuilder();
Document doc = parser.parse(args[0]);
Element racine = doc.getDocumentElement();
NodeList clients = racine.getElementsByTagName("client");
for (int i = 0; i < clients.getLength(); i++) {
Element client = (Element) clients.item(i);
String nom = client.getAttribute("nom");
NodeList transactions = client.getElementsByTagName("transaction");
int totalTrasactions = 0;
for(int j=0; j<transactions.getLength(); j++) {
try {
Element transaction = (Element) transactions.item(j);
int montant = Integer.parseInt(transaction.getAttribute("montant"));
totalTrasactions += montant;
}catch(Exception e) {
e.printStackTrace();
}
}
System.out.println(nom+" : "+totalTrasactions);
}
}
} |
Le résultat obtenu :
Code:
1 2 3 4
| Nom du client: Jean Charles
Somme: 1700
Nom du client: Pierre Élisabeth
Somme: 3400 |