Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente | |||
|
code_language:xml [2025/12/19 07:10] 216.73.216.214 ancienne révision (2025/11/01 01:04) restaurée |
code_language:xml [2025/12/19 11:54] (Version actuelle) 216.73.216.214 ancienne révision (2025/12/19 07:10) restaurée |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== XML ====== | + | ====== XML(Extensible Markup Language) |
| + | |||
| + | ===== Éléments d'un document XML ===== | ||
| + | |||
| + | === Balisage === | ||
| + | Un document XML est constitué de balises. Une balise est une chaîne de caractères constituant un identificateur et placé entre un caractère < et un caractère >. | ||
| + | |||
| + | Il existe différentes sortes de balises : | ||
| + | * Les balises ouvrantes < | ||
| + | * Les balises fermantes < | ||
| + | * Les balises vides < | ||
| + | * Les instructions de traitement < | ||
| + | * Les commentaires < | ||
| + | * Les sections CDATA (Character DATA) < | ||
| + | |||
| + | ==== Conventions de nommage des balises ==== | ||
| + | * Les noms ne peuvent pas commencer par la chaîne de caractères « xml », dans n' | ||
| + | * les noms sont sensibles à la casse (différentiation minuscules/ | ||
| + | * les noms ne peuvent pas débuter par un nombre ou un signe de ponctuation ; | ||
| + | * les noms ne peuvent pas contenir d' | ||
| + | * éviter les caractères accentués et les opérateurs, | ||
| + | |||
| + | ==== Les balises ouvrantes ==== | ||
| + | Une balise ouvrante est un élément délimitant une section. La section se termine ensuite par une balise fermante. | ||
| + | |||
| + | Une balise ouvrante est une chaîne composée de chiffres, de lettres et des caractères - et _. Cette chaîne est comprise entre un < et un >. | ||
| + | |||
| + | Exemple : | ||
| + | <code Xml [enable_line_numbers=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | ==== Les balises fermantes ==== | ||
| + | Une balise fermante reprend l' | ||
| + | Exemple : | ||
| + | <code Xml [enable_line_numbers=" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Les balises vides ==== | ||
| + | Une balise « vide » est le résultat de la contraction d'une balise ouvrante et d'une balise fermante ne contenant pas de données. | ||
| + | <code Xml [enable_line_numbers=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | === Les attributs === | ||
| + | Les balises ouvrantes et les balises vides peuvent être enrichies avec des attributs. | ||
| + | <code Xml [enable_line_numbers=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | Dans l' | ||
| + | |||
| + | attention|Leurs valeurs doivent obligatoirement être entre guillemets ou apostrophes dactylographiques< | ||
| + | |||
| + | === Les instructions de traitement === | ||
| + | Une instruction de traitement est destinée à être lue et comprise par un programme spécifique, | ||
| + | |||
| + | Une instruction de traitement commence par un point d' | ||
| + | |||
| + | Exemple : | ||
| + | <code Xml [enable_line_numbers=" | ||
| + | <?php echo date(" | ||
| + | </ | ||
| + | |||
| + | |||
| + | === Les commentaires === | ||
| + | |||
| + | Les commentaires sont des balises qui ne sont pas interprétées par l' | ||
| + | |||
| + | Un commentaire est une balise commençant par '''& | ||
| + | |||
| + | Exemple : | ||
| + | <code Xml [enable_line_numbers=" | ||
| + | <!-- Ceci est un commentaire utilisé dans les langages web --> | ||
| + | </ | ||
| + | |||
| + | === Les entités === | ||
| + | XML 1.0 définit un petit nombre d' | ||
| + | |||
| + | Ces entités sont : | ||
| + | |||
| + | ^ Entité | ||
| + | | & | ||
| + | | & | ||
| + | | & | ||
| + | | & | ||
| + | | & | ||
| + | |||
| + | Toujours sans déclaration de doctype spécial, on peut écrire une entité avec « & », « # », une référence Unicode< | ||
| + | |||
| + | ^ Entité ^ Caractère ^ Description ^ | ||
| + | |||
| + | | & | ||
| + | | & | ||
| + | Exemple | ||
| + | <code Xml [enable_line_numbers=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | ===== Structure d'un document XML ===== | ||
| + | |||
| + | |||
| + | === En-tête === | ||
| + | Les trois constituants de l' | ||
| + | ==== Version, encodage ==== | ||
| + | Il est souhaitable que le document XML commence par l' | ||
| + | <code Xml [enable_line_numbers=" | ||
| + | <?xml version=" | ||
| + | |||
| + | < | ||
| + | |||
| + | <?xml version=" | ||
| + | </ | ||
| + | |||
| + | ==== Référence au DTD ==== | ||
| + | La deuxième information utile est la mention du doctype. Certains documents XML en ont impérativement besoin, d' | ||
| + | <code Xml [enable_line_numbers=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | ]> | ||
| + | </ | ||
| + | En analysant ce {{wt|doctype}}, | ||
| + | |||
| + | ==== Mention d'une feuille de style ==== | ||
| + | Il est possible d' | ||
| + | <code Xml [enable_line_numbers=" | ||
| + | <? | ||
| + | <!-- ou --> | ||
| + | <? | ||
| + | </ | ||
| + | |||
| + | === Une seule racine === | ||
| + | Une balise a un statut spécial, c'est la racine du document XML. C'est à partir de cette balise que se développe l' | ||
| + | |||
| + | |||
| + | === Règles de mise en œuvre des balises === | ||
| + | *Toute balise ouverte doit être fermée. | ||
| + | *Les balises doivent être correctement imbriquées. | ||
| + | *Les balises sont imbriquables hiérarchiquement sans limitation mais il ne doit y avoir qu'un seul élément à la racine. | ||
| + | |||
| + | Le corps d'un document XML est une arborescence d' | ||
| + | <code Xml [enable_line_numbers=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Quand toutes ces règles sont respectées, | ||
| + | |||
| + | == Exemple de structure simple == | ||
| + | <code Xml [enable_line_numbers=" | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Espace de nom ===== | ||
| + | |||
| + | == Syntaxe == | ||
| + | L' | ||
| + | <code Xml [enable_line_numbers=" | ||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | ===== Attribut balise xml ===== | ||
| + | |||
| + | ^ Attribut ^ Description ^ Exemple ^ | ||
| + | | xml:lang | décrit la langue du contenue de l' | ||
| + | | xml: | ||
| + | | xml: | ||
| + | <book xml: | ||
| + | < | ||
| + | <section xml: | ||
| + | <section xml: | ||
| + | <section xml: | ||
| + | </ | ||
| + | </ | ||
| + | | xml:id | Permet d' | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Interprétation du XML ===== | ||
| + | |||
| + | Il existe de nombreuses API permettant d' | ||
| + | |||
| + | * 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' | ||
| + | |||
| + | ===== XPath ===== | ||
| + | == Syntaxe == | ||
| + | Le XPath est un langage de sélection de différents types d' | ||
| + | |||
| + | Le XPath se présente sous la forme de chemins composés de http:// | ||
| + | ^ 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' | ||
| + | | . | Sélectionne à partir du nœud courant (chemin relatif). = <code Xml [enable_line_numbers=" | ||
| + | | .. | Sélectionne à partir du parent du nœud courant. = <code Xml [enable_line_numbers=" | ||
| + | | @ | Sélectionne les attributs. = <code Xml [enable_line_numbers=" | ||
| + | | < | ||
| + | |||
| + | remarque|Il existe un interpréteur en ligne pour réaliser les exemples décrits ci-dessous : http:// | ||
| + | |||
| + | 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 | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |||
| + | == Tests de nœuds == | ||
| + | Soit l' | ||
| + | * < | ||
| + | * < | ||
| + | |||
| + | |||
| + | ^ Tests ^ Notes ^ | ||
| + | | comment() | trouve tous les commentaires (ex : < | ||
| + | | text() | trouve un nœud texte, (ex : < | ||
| + | | processing-instruction() | trouve les instructions de traitement (ex : < | ||
| + | | node() | trouve tous les nœuds.| | ||
| + | |||
| + | == Prédicats == | ||
| + | Les prédicats sont des fonctions filtrant les nœuds évalués à '' | ||
| + | |||
| + | 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' | ||
| + | */ / | ||
| + | */ / | ||
| + | */ | ||
| + | */ | ||
| + | |||
| + | ^ Prédicats ^ Notes ^ | ||
| + | |||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |< | ||
| + | |||
| + | == Exemples == | ||
| + | Soit l' | ||
| + | <code Xml [enable_line_numbers=" | ||
| + | <?xml version=" | ||
| + | <tronc nom=" | ||
| + | <!-- commentaire 1 --> | ||
| + | < | ||
| + | < | ||
| + | <!-- commentaire 2 --> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | === Abréviations === | ||
| + | - Sélection 1 : toutes les < | ||
| + | - Abrégé : < | ||
| + | - Non abrégé : < | ||
| + | - Sélection 2 : la < | ||
| + | - Abrégé : < | ||
| + | - Non abrégé : < | ||
| + | | ||
| + | - < | ||
| + | - Sélection 4 : dernière branche du tronc. | ||
| + | - < | ||
| + | - Sélection 5 : tous les noms des brindilles qui n'ont pas de feuille. | ||
| + | - < | ||
| + | |||
| + | === PHP === | ||
| + | Créer le .php suivant à côté du tronc.xml publié ci-dessus. | ||
| + | <code php [enable_line_numbers=" | ||
| + | <?php | ||
| + | $file = ' | ||
| + | $xpath = "/ | ||
| + | if(file_exists($file)) { | ||
| + | $xml = simplexml_load_file($file); | ||
| + | if($result = $xml-> | ||
| + | print ' | ||
| + | var_dump($result); | ||
| + | } else { | ||
| + | echo ' | ||
| + | } | ||
| + | } | ||
| + | else | ||
| + | exit(" | ||
| + | ?> | ||
| + | </ | ||