UNIVERSITE CHOUAIB DOUKKALI Département des mathématiques Faculté des sciences Département des mathématiques Et informatiques ELJADIDA XML / XPATH Réalisé par: ZINEB KHATTABY HANANE SAHNOUNE Pr: Mr. Ali ElHORE Année universitaire: 2012/2013
Sommaire Rappel sur document XML Introduction à XPath Qu’est ce que Xpath? Requêtes Xpath Sélection Condition Quelques exemples des fonctions de Xpath Environnement requis Exemple de mise en œuvre
Rappel sur XML ► Le Xml (Extensible Markaup Language, « langage de balisage extensible ») est un langage informatique de balisage générique qui dérive de SGML. ► En pratique, un fichier XML est un simple fichier texte, contenant des balises. La particularité de XML est qu'aucune balise n'est prédéfinie : c'est au concepteur de définir les balises qui ont du sens pour lui.
Exemple d’un fichier XML <?xml version="1.0" encoding="UTF-8"?> <etudiants> <etudiant id="1"> <nom> Sahnoune</nom> <Prenom> Hanane </Prenom> <date-ins> 20010 </date-ins> </etudiant> <etudiant id="2"> <nom> Khattaby </nom> <Prenom> Zineb </Prenom> </etudiants>
Introduction à XPath XPath permet de parcourir un fichier XML d'une façon à la fois simple et puissante. De la sorte, en peu de temps,un développeur peut rapidement et aisément extraire les informations qui l'intéressent, même dans un document qui en comporte bien plus. On peut par exemple : récupérer le contenu d'une balise précise récupérer du contenu en fonction de la valeur d'un attribut d'une balise récupérer un ensemble de balises avec leur contenu et les parcourir
Qu’est ce qu’un XPath ► XPath est un langage avec une syntaxe non XML, permettant d'adresser les différents nœuds ou groupes de nœuds particuliers d'un document XML. ► XPath voit le document XML comme un arbre de nœuds, qu'il permet de parcourir selon des axes (fils, parent, ancêtre, descendant, ...) et en sélectionnant les nœuds par leur nom.
Requêtes XPath
Sélection élément-attributs ’’/’’ /nom : sélectionne tous les éléments enfants de l’élément « nom » /* : sélectionne tous les éléments-enfants de type élément du contexte actuel /book/@price" sélectionne tous les attributs price des éléments book
Condition [ ] /*/etudiant[nom=‘Mohamed’]:sélectionne tous les éléments du document ayant un élément enfant nommé nom peu importe la valeur de ce dernier. /etudiant[date-ins = ‘2010']: sélectionne tous les éléments du document ayant un élément enfant nommé date-ins dont la valeur est exactement 2010. /nom[1] sélectionne uniquement le premier élément nom parmi les éléments se nommant nom dans un document XML. /etudiants[@id != ‘1']/etudiant :sélectionne tous les éléments etudiant pour lesquels la valeur de l'attribut id de leur élément parent etudiant est différente de 1 .
Quelques exemples des fonctions de XPath Count() : calcule le nombre des éléments qui ont un condition en commun /*[count(BBB)=2] Sum() :retourne la somme, pour tous les éléments de l'ensemble passé en argument, du résultat de la conversion en numérique de leur valeur textuelle. Sum(/Root/BBB) Name() : Elle retourne une chaîne contenant le nom passé en argument /*[name()=‘BBB']
Environnement requis Les librairies utilisées sont JDom et Jaxen. Voici les jars nécessaires: jdom.jar : définition des interfaces jaxen-core.jar : pour le parsing jaxen-jdom.jar : implémentation d'XPath saxpath.jar : pour construire le fichier Dom
Exemple de mise en œuvre
Fichier xml: etudiants.xml <?xml version="1.0" encoding="UTF- 8"?> <etudiants> <etudiant id="1"> <nom> Sahnoune</nom> <Prenom> Hanane </Prenom> <annee-ins> 2010</annee-ins> </etudiant> <etudiant id="2"> <nom> Khattaby </nom> <Prenom> Zineb </Prenom> <nbreetudiant> 3 </nbreetudiant> </etudiants> Fichier xml: etudiants.xml
Fichier etudiants.java import java.io.*; import org.jdom.*; import org.jdom.input.*; import org.w3c.dom.NodeList; import javax.xml.xpath.*; public class Etudiants { static org.jdom.Document document; public static void main(String[] args) throws XPathExpressionException { SAXBuilder sxb = new SAXBuilder(); try { document = sxb.build(new File("etudiant.xml")); } catch(Exception e){} XPath xpath = XPathFactory.newInstance().newXPath(); XPathExpression requet = xpath.compile("/etudiants/etudiant[@id='1']/nom"); System.out.println("Selectionner le nom de l'etudiant qui a comme identifant 1"); Object result = requet.evaluate(document, XPathConstants.NODESET); NodeList nodes = (NodeList) result; for (int i = 0; i < nodes.getLength(); i++) { System.out.println(nodes.item(i).getNodeName()); }}} Fichier etudiants.java
Conclusion la technologie XPath permet d’effectuer des requêtes dans un document XML. XPath est aux documents XML, ce qu’est SQL aux bases de données. cette technologie est intégrée sur d'autres plateformes telles que Java.
Merci pour votre attention