Tutoriel XML

ACCUEIL XML Introduction XML XML Comment utiliser Arbre XML Syntaxe XML Éléments XML Attributs XML Espaces de noms XML Affichage XML Requête HTTP XML Analyseur XML DOM XML XPath XML XML XSLT XQuery XML XMLXLink Validateur XML DTD XML Schéma XML Serveur XML Exemples XML XML Quiz Certificat XML

XMLAJAX

Présentation d'AJAX AJAX XMLHttp Requête AJAX Réponse AJAX Fichier XML AJAX PHP AJAX ASP AJAX Base de données AJAX Applications AJAX Exemples AJAX

DOM XML

Présentation du DOM Nœuds DOM Accès au DOM Informations sur le nœud DOM Liste des nœuds DOM Traversée du DOM Navigation DOM DOM Obtenir des valeurs Nœuds de changement DOM DOM Supprimer les nœuds DOM Remplacer les nœuds DOM Créer des nœuds DOM Ajouter des nœuds Nœuds de clonage DOM Exemples DOM

Tutoriel XPath

Présentation de XPath Nœuds XPath Syntaxe XPath Axes XPath Opérateurs XPath Exemples XPath

Tutoriel XSLT

Présentation de XSLT Langages XSL Transformation XSLT XSLT <modèle> XSLT <valeur-de> XSLT <pour-chaque> XSLT <sort> XSLT <si> XSLT <choisir> Appliquer XSLT XSLT sur le client XSLT sur le serveur XSLT Éditer XML Exemples XSLT

Tutoriel XQuery

Présentation de XQuery Exemple XQuery XQuery FLWOR XQuery HTML Termes XQuery Syntaxe XQuery Ajouter XQuery Sélection XQuery Fonctions XQuery

DTD XML

Présentation de la DTD Blocs de construction DTD Éléments DTD Attributs DTD Éléments DTD vs Attr Entités DTD Exemples de DTD

Schéma XSD

Présentation XSD Comment XSD XSD <schéma> Éléments XSD Attributs XSD Restrictions XSD

Complexe XSD

Éléments XSD XSD vide Éléments XSD uniquement Texte XSD uniquement XSD Mixte Indicateurs XSD XSD <tout> XSD <anyAttribute> Remplacement XSD Exemple XSD

Données XSD

Chaîne XSD Date XSD Numérique XSD Divers XSD Référence XSD

Services Web

Services XML XMLWSDL SAVON XML XML RDF XML RSS

Les références

Types de nœuds DOM Nœud DOM Liste de nœuds DOM DOM NamedNodeMap Documents DOM Élément DOM Attribut DOM Texte DOM DOM CDATA DOM Comment DOM XMLHttpRequest Analyseur DOM Éléments XSLT Fonctions XSLT/XPath

Arbre de nœuds XML DOM Traverse


Traverser signifie boucler ou parcourir l'arborescence des nœuds.


Parcourir l'arborescence des nœuds

Souvent, vous souhaitez boucler un document XML, par exemple : lorsque vous souhaitez extraire la valeur de chaque élément.

C'est ce qu'on appelle "Parcourir l'arborescence des nœuds"

L'exemple ci-dessous parcourt tous les nœuds enfants de <book> et affiche leurs noms et valeurs :

Exemple

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var x, i ,xmlDoc;
var txt = "";
var text = "<book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");

// documentElement always represents the root node
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length ;i++) {
    txt += x[i].nodeName + ": " + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>

</body>
</html>

Sortir:

title: Everyday Italian
author: Giada De Laurentiis
year: 2005

Exemple expliqué :

  1. Charger la chaîne XML dans xmlDoc
  2. Obtenir les nœuds enfants de l'élément racine
  3. Pour chaque nœud enfant, affichez le nom du nœud et la valeur de nœud du nœud de texte


Différences de navigateur dans l'analyse DOM

Tous les navigateurs modernes prennent en charge la spécification W3C DOM.

Cependant, il existe quelques différences entre les navigateurs. Une différence importante est :

  • La façon dont ils gèrent les espaces blancs et les nouvelles lignes

DOM - Espaces blancs et nouvelles lignes

XML contient souvent des sauts de ligne, ou des espaces blancs, entre les nœuds. C'est souvent le cas lorsque le document est édité par un simple éditeur comme Notepad.

L'exemple suivant (édité par Notepad) contient CR/LF (nouvelle ligne) entre chaque ligne et deux espaces devant chaque nœud enfant :

<book>
  <title>Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

Internet Explorer 9 et les versions antérieures ne traitent PAS les espaces blancs vides ou les nouvelles lignes comme des nœuds de texte, contrairement aux autres navigateurs.

L'exemple suivant affichera le nombre de nœuds enfants de l'élément racine (de books.xml ). IE9 et les versions antérieures généreront 4 nœuds enfants, tandis qu'IE10 et les versions ultérieures, ainsi que les autres navigateurs, généreront 9 nœuds enfants :

Exemple

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "Number of child nodes: " + x.length;
}

PCDATA - Données de caractères analysées

Les analyseurs XML analysent normalement tout le texte d'un document XML.

Lorsqu'un élément XML est analysé, le texte entre les balises XML est également analysé :

<message>This text is also parsed</message>

L'analyseur le fait parce que les éléments XML peuvent contenir d'autres éléments, comme dans cet exemple, où l'élément <name> contient deux autres éléments (premier et dernier) :

<name><first>Bill</first><last>Gates</last></name>

et l'analyseur le décomposera en sous-éléments comme ceci :

<name>
  <first>Bill</first>
  <last>Gates</last>
</name>

Parsed Character Data (PCDATA) est un terme utilisé à propos des données textuelles qui seront analysées par l'analyseur XML.


CDATA - Données de caractères (non analysées)

Le terme CDATA est utilisé pour les données textuelles qui ne doivent pas être analysées par l'analyseur XML.

Les caractères tels que "<" et "&" ne sont pas autorisés dans les éléments XML.

"<" générera une erreur car l'analyseur l'interprète comme le début d'un nouvel élément.

"&" générera une erreur car l'analyseur l'interprète comme le début d'une entité de caractère.

Certains textes, comme le code JavaScript, contiennent de nombreux caractères "<" ou "&". Pour éviter les erreurs, le code de script peut être défini comme CDATA.

Tout ce qui se trouve à l'intérieur d'une section CDATA est ignoré par l'analyseur.

Une section CDATA commence par " <![CDATA[ " et se termine par " ]]> " :

<script>
<![CDATA[
function matchwo(a,b) {
    if (a < b && a < 0) {
        return 1;
    } else {
        return 0;
    }
}
]]>
</script>

Dans l'exemple ci-dessus, tout ce qui se trouve dans la section CDATA est ignoré par l'analyseur.

Remarques sur les sections CDATA :

Une section CDATA ne peut pas contenir la chaîne "]]>". Les sections CDATA imbriquées ne sont pas autorisées.

Le "]]>" qui marque la fin de la section CDATA ne peut pas contenir d'espaces ou de sauts de ligne.