Outils pour utilisateurs

Outils du site


code_language:xml

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
code_language:xml [2025/09/09 11:00]
20.171.207.178 ancienne révision (2025/07/03 03:31) restaurée
code_language:xml [2025/11/01 16:19] (Version actuelle)
74.7.227.242 ancienne révision (2025/09/09 10:50) restaurée
Ligne 1: Ligne 1:
-====== XML(Extensible Markup Language) ======+====== XML ======
  
 ===== Éléments d'un document XML ===== ===== Éléments d'un document XML =====
Ligne 7: Ligne 7:
  
 Il existe différentes sortes de balises : Il existe différentes sortes de balises :
-  * Les balises ouvrantes <code><item></code> +  * Les balises ouvrantes <code>&lt;item&gt;</code> 
-  * Les balises fermantes <code></item></code> +  * Les balises fermantes <code>&lt;/item&gt;</code> 
-  * Les balises vides <code><nop/></code> +  * Les balises vides <code>&lt;nop/&gt;</code> 
-  * Les instructions de traitement <code><?xml-stylesheet ... ?></code> +  * Les instructions de traitement <code>&lt;?xml-stylesheet ... ?&gt;</code> 
-  * Les commentaires <code><!-- J'explique --></code> +  * Les commentaires <code>&lt;!-- J'explique --&gt;</code> 
-  * Les sections CDATA (Character DATA) <code><![CDATA[ Contenu de la section ]]></code>+  * Les sections CDATA ({{lang|en|Character DATA}}) <code><![CDATA[ Contenu de la section ]]></code>
  
 ==== Conventions de nommage des balises ==== ==== Conventions de nommage des balises ====
Ligne 101: Ligne 101:
 </code> </code>
  
-===== Structure d'un document XML =====+==== Structure d'un document XML ====
  
  
Ligne 155: Ligne 155:
  
 Quand toutes ces règles sont respectées, on obtient un document XML « '''bien formé''' ». Dans ce cas, un navigateur comme Internet explorer ou Firefox peut l'ouvrir. Dans le cas contraire, le navigateur affiche un message d'erreur. Quand toutes ces règles sont respectées, on obtient un document XML « '''bien formé''' ». Dans ce cas, un navigateur comme Internet explorer ou Firefox peut l'ouvrir. Dans le cas contraire, le navigateur affiche un message d'erreur.
- 
-== Exemple de structure simple == 
-<code Xml [enable_line_numbers="true"]> 
-<?xml version="1.0" ?> 
-<root> 
-     <items> 
-         <item no="1">Premier élément</item> 
-         <item no="2">Autre chose</item>       
-         <item no="3">Troisième élément</item> 
-         <item no="4">Quatrième élément</item> 
-     </items> 
-</root> 
-</code> 
- 
-===== Espace de nom ===== 
- 
-== Syntaxe == 
-L'exemple ci-dessous contient deux déclarations, la première par défaut et la seconde associant le préfixe « ip » à l'URI des adresses IP, pour les distinguer des adresses postales :  
-<code Xml [enable_line_numbers="true"]> 
-<adresse 
- xmlns="http://www.example.com/adresses_postales" 
- xmlns:ip="http://www.example.com/adresses_ip"> 
-</code> 
- 
-===== Attribut balise xml ===== 
- 
-^ Attribut ^ Description ^ Exemple ^ 
-| xml:lang | décrit la langue du contenue de l'élément, sur deux ou trois lettres | <code Xml [enable_line_numbers="true"]> <p xml:lang="fr">Bonjour</p> </code> | 
-| xml:space  | permet de faire respecter à une application le traitement des caractères d'espacement; deux valeurs possible: default ou preserve | <code Xml [enable_line_numbers="true"]> <p xml:space="default"> titre1</p> <!--L'application traitera les espaces selon ses propres règles --></code> <code Xml [enable_line_numbers="true"]><p xml:space="preserve">titre2 </p><!--L'application devra respecter les espaces contenue dans le titre2 à la lettre --></code> | 
-| xml:base  | Permet de spécifié l'URI (URL+URN) d'un élément | <code Xml [enable_line_numbers="true"]><?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> 
-<book xml:base="http://www.somewhere.org/Teaching/index.html"> 
- <chapter xml:base="XML/chapter.html"> 
-  <section xml:base="XPath/section.html"/> 
-  <section xml:base="/Course/section.html"/> 
-  <section xml:base="http://www.elsewhere.org/section.html"/> 
- </chapter> 
-</book></code> | 
-| xml:id | Permet d'attribuer un identificateur à tout élément | <code Xml [enable_line_numbers="true"]><personName xml:id="423"> </personName></code> | 
- 
- 
- 
- 
-===== Interprétation du XML ===== 
- 
-Il existe de nombreuses API permettant d'interpréter un document XML. La plupart sont conçues pour un langage particulier : 
- 
-  * Dom4J (Java) 
-  * JDOM (Java) 
-  * SimpleXML (PHP) 
-  * PyXML (Python)[1] 
- 
-Tous ces interpréteurs peuvent être de deux types normalisés : 
- 
-  * DOM (créé par le W3C) : un arbre de nœuds complet est construit à partir du document XML. 
-  * SAX (créé par David Megginson) : l'interpréteur appelle certaines fonctions de l'application en fonction de chacun des éléments de base rencontrés dans le document XML (ouvertures de balise, fermetures, données, commentaires, ...). 
- 
-===== XPath ===== 
-== Syntaxe == 
-Le XPath est un langage de sélection de différents types d'objets XML, appelés « nœuds »http://www.w3schools.com/dom/dom_nodetype.asp. Un ensemble de nœuds est appelé « contexte ».  
- 
-Le XPath se présente sous la forme de chemins composés de http://www.w3schools.com/xpath/xpath_syntax.asp 
-^ Sélecteur ^ Notes ^ 
-| nom du nœud | Sélectionne ce qui est compris dans le nœud nommé | 
-| /  | Sélectionne en partant du nœud racine (chemin absolu). | 
-| / / | Sélectionne en partant du nœud courant, peu importe le reste de l'emplacement. | 
-| .  | Sélectionne à partir du nœud courant (chemin relatif). = <code Xml [enable_line_numbers="true"]>self::node()</code> | 
-| .. | Sélectionne à partir du parent du nœud courant. = <code Xml [enable_line_numbers="true"]>parent::node()</code> | 
-| @  | Sélectionne les attributs. = <code Xml [enable_line_numbers="true"]>attribute::</code> | 
-| <nowiki>|</nowiki> | Opérateur de sélection multiple.| 
- 
-remarque|Il existe un interpréteur en ligne pour réaliser les exemples décrits ci-dessous : http://www.xpathtester.com/.<br/> La classe http://www.php.net/manual/fr/domxpath.query.php permet de les programmer. 
- 
-Ces expressions sont appelées « chemin de localisation », composés d'un ou plusieurs « pas de localisation » (ou « étapes ») séparés par des « / ». Les pas de localisation ont chacun trois composants : 
-  - Un axe (parent, descendant…). 
-  - Un test de nœud (nom ou fonction désignant les nœuds). 
-  - Des prédicats (entre crochets). 
- 
-== Axes == 
-Pour décrire les relations entre les nœuds, XPath utilise le vocabulaire suivant : 
- 
-^ Axe ^ Abréviation ^ Notes 
-|<code>ancestor</code>| | ancêtre | 
-|<code>ancestor-or-self</code>| | ancêtre ou soi | 
-|<code>attribute</code> |<code>@</code> | attribut, <code>@abc</code> signifie <code>attribute::abc</code> | 
-|<code>child</code>| | enfant, <code>xyz</code> signifie <code>child::xyz</code> | 
-|<code>descendant</code>| | | 
-|<code>descendant-or-self</code>|<code>//</code>|<code>//</code> signifie <code>/descendant-or-self::node()/</code> | 
-|<code>following</code>| | | suivant| 
-|<code>following-sibling</code>| | | frère suivant | 
-|<code>namespace</code>| | | espace de noms | 
-|<code>parent</code> | <code>..</code> |<code>..</code> signifie <code>parent::node()</code> | 
-|<code>preceding</code>| | | précédent | 
-|<code>preceding-sibling</code> || | 
-|<code>self</code>|<code>.</code>|soi, <code>.</code> signifie <code>self::node()</code> | 
- 
-== Tests de nœuds == 
-Soit l'[[../Espace de nom/|espace de nom]] <code>ns</code> : 
-  * <code>//ns:*</code>  sélectionne tout les éléments du namespace. 
-  * <code>//ns:nom</code> récupère tous les éléments du namespace nommés "nom". 
- 
- 
-^ Tests ^ Notes ^ 
-| comment() | trouve tous les commentaires (ex : <code><!-- commentaire 1 --></code>)| 
-| text() | trouve un nœud texte, (ex : <code>hello world</code> dans <code><k>hello<m> world</m></k></code>)| 
-| processing-instruction() | trouve les instructions de traitement (ex : <code>//processing-instruction('php') trouve <?php echo $a; ?></code>)| 
-| node() | trouve tous les nœuds.| 
- 
-== Prédicats == 
-Les prédicats sont des fonctions filtrant les nœuds évalués à ''false'', qui se placent à la fin des sélections<ref>http://www.w3.org/TR/xpath#corelib</ref> : 
- 
-Par exemple, les quatre requêtes ci-dessous renvoie le même résultat (si la branche 2 est la dernière comme dans l'exemple en bas de cette page) : 
-  */ /branche[2] 
-  */ /branche[@nom="branche2"] 
-  */tronc/branche[last()] 
-  */tronc/branche[position()=2] 
- 
-^ Prédicats ^ Notes ^ 
- 
-|<code>last()</code> | renvoie le dernier nœud de la sélection| 
-|<code>position()</code> | renvoie le nœud situé à la position précisée| 
-|<code>count(contexte)</code> | renvoie le nombre de nœuds en paramètre| 
-|<code>starts-with(chaine1, sous-chaine2)</code> | renvoie ''true'' si le premier argument commence avec le second| 
-|<code>contains(botte_de_foin, aiguille)</code> | renvoie ''true'' si le premier argument contient le second| 
-|<code>sum(contexte)</code> | renvoie la somme des valeurs numériques des nœuds en paramètre| 
-|<code>floor(nombre)</code> | renvoie le nombre arrondi à l'entier inférieur| 
-|<code>ceiling(nombre)</code> | renvoie le nombre arrondi à l'entier supérieur| 
-|<code>round(nombre)</code> | renvoie le nombre arrondi à l'entier le plus proche| 
- 
-== Exemples == 
-Soit l'arborescence suivante : 
-<code Xml [enable_line_numbers="true"]> 
-<?xml version="1.0" encoding="UTF-8"?> 
-<tronc nom="tronc1">  
- <!-- commentaire 1 -->  
- <branche nom="branche1" epaisseur="gros">  
- <brindille nom="brindille1">  
- <!-- commentaire 2 -->  
- <feuille nom="feuille1" couleur="marron" /> 
- <feuille nom="feuille2" poids="50" /> 
- <feuille nom="feuille3" />  
- </brindille>  
- <brindille nom="brindille2"> 
- <feuille nom="feuille4" poids="90" />  
- <feuille nom="feuille5" couleur="violet" />    
- </brindille> 
- </branche>  
- <branche nom="branche2"> 
- <brindille nom="brindille3">  
- <feuille nom="feuille6" />  
- </brindille>  
- <brindille nom="brindille4">  
- <feuille nom="feuille7" />  
- <feuille nom="feuille8" />  
- <feuille nom="feuille9" couleur="noir" />  
- <feuille nom="feuille10" poids="100" />   
- </brindille> 
- </branche>  
- <branche nom="branche3"> 
- <brindille nom="brindille5">  
- </brindille>  
- </branche>  
-</tronc> 
-</code> 
- 
-=== Abréviations === 
-  - Sélection 1 : toutes les <feuille> d'une <brindille> contenue dans une <branche>, descendant du <tronc>, issu de la racine. 
-    - Abrégé : <code>/tronc/branche/brindille/feuille</code> 
-    - Non abrégé : <code>/child::tronc/child::branche/child::brindille/child::feuille</code> 
-  - Sélection 2 : la <branche> dont l'attribut "nom" est "branche3", enfant du <tronc>, inclue dans la racine. 
-    - Abrégé : <code>/tronc/branche[@nom='branche3']</code> 
-    - Non abrégé : <code>/child::tronc/child::branche[attribute::nom='branche3']</code> 
-   -Sélection 3 : toutes les brindilles ont au moins une feuille. 
-     - <code>//brindille[feuille]</code> 
-   - Sélection 4 : dernière branche du tronc. 
-     - <code>//tronc/branche[last()]</code> 
-   - Sélection 5 : tous les noms des brindilles qui n'ont pas de feuille. 
-     - <code>//brindille[not(feuille)]/@nom</code> 
- 
-=== PHP === 
-Créer le .php suivant à côté du tronc.xml publié ci-dessus. 
-<code php [enable_line_numbers="true"]> 
-<?php 
-  $file = 'tronc.xml'; 
-  $xpath = "/tronc/branche/brindille/feuille[last()]"; 
-  if(file_exists($file)) { 
-    $xml = simplexml_load_file($file); 
-    if($result = $xml->xpath($xpath)) { 
- print 'Résultats :'; 
- var_dump($result); 
-    } else { 
-      echo 'Syntaxe invalide.'; 
- } 
-  } 
-  else 
-    exit("Le fichier $file n'existe pas."); 
-?> 
-</code> 
  
  
code_language/xml.1757415637.txt.gz · Dernière modification: 2025/09/09 11:00 de 20.171.207.178