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 07:10] (Version actuelle) 216.73.216.214 ancienne révision (2025/11/01 01:04) restaurée |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== XML(Extensible Markup Language) | + | ====== XML ====== |
| - | + | ||
| - | ===== É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(" | + | |
| - | ?> | + | |
| - | </ | + | |