1/14/2009

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd"> <document> <header> <title>TD0: XML-DOM</title>

XML
Cours XML

<subtitle>DOM</subtitle> </header> <body> <note></note> <section> <title>DOM (Document Object Model)</title> <p> CDATA_SECTION et ELEMENT (Les attributs sont dŽtenus par les elements). Seul un element peut avoir des fils. Autrement dit, les noeuds de type TEXT, COMMENT et CDATA_section sont des feuilles.</p> <p>Pour le document XML ci-dessous, rŽpondre aux questions suivantes:</p> <ol> <li> <p>Quel est le nombre de noeuds de ce document?</p> </li> <li> <p>Combien de noeuds sont des feuilles?</p> </li> ... </document>

Exemple

Processing Instruction
Un document XML doit commencer par une PI ayant le processeur XML comme cible
<?xml version="1.0" encoding="UTF-8"?>

Target

String (pseudo attributs)

Eléments et Hierarchie de contenu

1

1/14/2009

• Un document XML est composé d’éléments
complexes (en contenant d’autres) et d’éléments simples contenant du texte. ouvrantes et fermantes.

Element et balises

Elements et Attributs
balise ouvrante Valeur de l’attribut to <message to="you@yourAddress.com" from="me@myAddress.com" subject="XML Is Really Cool"> <body> How many ways is XML cool? Let me count the ways.. </body> element simple (contenu de type TEXT) de nom body </message> Fin de l’element complexe de nom message balise fermante

• Les éléménts sont délimités par des balises • Les éléments peuvent etre précisés par des
attributs

• Les éléménts ont des noms

Eléments sans contenu
Notation: < ... />
<message to="you@yourAddress.com" from="me@myAddress.com" subject="XML Is Really Cool"> <flag/> <memo class="p3"/> <text> How many ways is XML cool? Let me count the ways... </text> </message>

Arbre Nœuds et types

2

1/14/2009

Structure en arbre
6 nœuds de type element
message body

Structure en arbre
| | | | | | | | | | |

to

from

subject

text sss sss sss

Example de document XML <message> <to>you@yourAddress.com</to> <from>me@myAddress.com</from> <subject>XML Is Really Cool</subject> <body> <text> How many ways is XML cool?... </text> </body> </message>

sss

4 nœuds de type text

Présence obligatoire d’un élément racine (qui contient tous les autres)

Type comment
<!– les commentaires sont ignorés -->
<message to="you@yourAddress.com" from="me@myAddress.com" subject="XML Is Really Cool"> <!-- ceci est un commentaire --> <body> How many ways is XML cool? Let me count the ways... </body> </message>

Type CDATA
Les caractères d’une section DATA ne sont pas analysés par le parseur
<script> <![CDATA[ function matchwo(a,b){ if (a < b && a < 0) then return 1; else return 0 } ]]> Pas de blancs entre ces 3 caractères </script>

3

1/14/2009

Type TEXT
Un nœud de type TEXT n’a pas de nom. Il correspond a une feuille de l’arbre et n’a donc pas de fils

Document Object Model

DOM
DOM définit 4 types de noeuds:

DOM & Attributs
4 noeuds de type TEXT

TEXT, COMMENT, CDATA_SECTION et ELEMENT
Nom du document Element racine

• DOM ne les considère pas comme
faisant partie de l’arbre

5 noeuds de type ELEMENT

• Les attributs sont des nœuds • Les attributs ne sont pas des nœuds fils
de l’élément qu’il décrivent

4

1/14/2009

Exemple DOM
Syntaxe
Noeuds
Le noeud racine message à un seul noeud fils de nom text et de type ELEMENT. Il détient 3 noeuds attributs. Le nœud de nom text a un noeud fils de type text qui n’a pas de nom. - L’arbre DOM a 2 nœuds de type ELEMENT et 1 nœud de type TEXT

Noms
|

QName
• Noms avec préfixe (Qualified Name) • exemple: xsd:element, svg:rectangle • Ils évitent les collisions de noms (notion
d’espace de noms)

| |

Libre avec certaines règles | Pas d’espaces, pas d’accents | Premier caractère alphabetique | … Noms sensibles aux majusculesminuscules Noms composés avec le caractère autorisés: exemple: ordre-achat

5

1/14/2009

Codage des documents XML
Codage des caractères: ISO-8859-1 UTF-8 ---> latin-1 ---> Unicode on 8 bits

Processing Instructions
<?cible instructions?> Destiné à un programme cible

For Tibetan use UTF-16
Voir les préférences d’eclipse

Exemples
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?oxygen RNGSchema="file:/C:/workspace/rng/animSvg.rng" type="xml"?>

Substitutions prédéfinies
Syntaxe: &substitution; Obligatoires
&lt; < plus petit que

Substitution: exemple
Une section CDATA est plus simple dans ce cas
<source> &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;tree:rootNode xmlns:tree="http://www.eclipse.org/emf/dom/Tree" label="root"&gt; &lt;tree:childNode label="text"&gt;text&lt;/tree:childNode&gt; &lt;tree:childNode label="comment"&gt; &lt;!--comment--&gt; &lt;/tree:childNode&gt; &lt;tree:childNode label="cdata"&gt; &lt;![CDATA[&lt;cdata&gt;]]&gt; &lt;/tree:childNode&gt; &lt;/tree:rootNode&gt; </source>

Exemple: <math> 3 &gt; 2 </math> Facultatives
"

&gt;

>

plus grand que

&amp;

&

ampersand

&quot;

guillemets

6

1/14/2009

Arbre et références
Références XML
XML attribute types: ID, IDREF, IDREFS

• La structure en arbre est insuffisante ou
nécéssiterait une duplication des éléments dans de nombreux cas.

• Les ID permettent un accés rapides aux
éléménts en programmation DOM.

Références
• Les types sont précisés dans une
grammaire (DTD ou schema)

Références
Example <region id="title" ... /> ... Type ID <body> <img region="title" dur="3s" ... /> </body>

• Si id est du type ID,

l’attribut id doit avoir une valeur unique value correspondre à celle d’un id

• Si ref est du type IDREF, sa valeur doit

Type IDREF

7

1/14/2009

Document bien formé
Si et seulement si: Structure en arbre respectée + Respect des règles de nommage

8