Sie sind auf Seite 1von 8

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>

<subtitle>DOM</subtitle>
Exemple
</header>

XML <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
Cours XML 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>

Processing Instruction
Un document XML doit commencer par une PI
ayant le processeur XML comme cible
Eléments et
<?xml version="1.0" encoding="UTF-8"?>
Hierarchie de
Target String (pseudo attributs)
contenu

1
1/14/2009

Element et balises Elements et Attributs


• Un document XML est composé d’éléments Valeur de l’attribut to
complexes (en contenant d’autres) et balise ouvrante

d’éléments simples contenant du texte.


• Les éléménts sont délimités par des balises
<message to="you@yourAddress.com" from="me@myAddress.com"
subject="XML Is Really Cool">
<body>
ouvrantes et fermantes. How many ways is XML cool? Let me count the ways..
</body>

• Les éléments peuvent etre précisés par des </message> element simple (contenu de type TEXT) de nom body

attributs Fin de l’element complexe de nom message

• Les éléménts ont des noms


balise fermante

Eléments sans contenu


Notation: < ... /> Arbre
<message to="you@yourAddress.com"
from="me@myAddress.com"
subject="XML Is Really Cool">
Nœuds et types
<flag/>
<memo class="p3"/>
<text>
How many ways is XML cool? Let me
count the ways...
</text>
</message>

2
1/14/2009

Structure en arbre Structure en arbre


Example de document XML
6 nœuds de type element |
| <message>
message
| <to>you@yourAddress.com</to>
| <from>me@myAddress.com</from>
| <subject>XML Is Really Cool</subject>
to from subject body
| <body>
| <text>
| How many ways is XML cool?...
text | </text>
sss sss sss | </body>
| </message>

Présence obligatoire d’un élément


sss
racine (qui contient tous les autres)
4 nœuds de type text

Type comment Type CDATA


<!– les commentaires sont ignorés --> Les caractères d’une section DATA ne sont pas
analysés par le parseur
<message to="you@yourAddress.com"
from="me@myAddress.com"
subject="XML Is Really Cool"> <script>
<!-- ceci est un commentaire --> <![CDATA[
function matchwo(a,b){
<body> if (a < b && a < 0) then
How many ways is XML cool? Let me return 1;
count the ways... else return 0 }
</body> ]]> Pas de blancs entre ces 3 caractères
</message> </script>

3
1/14/2009

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

DOM DOM & Attributs


DOM définit 4 types de noeuds:
TEXT, COMMENT, CDATA_SECTION et ELEMENT
4 noeuds de type TEXT

• DOM ne les considère pas comme


Nom du document
Element racine

faisant partie de l’arbre


• Les attributs sont des nœuds
5 noeuds de type
• Les attributs ne sont pas des nœuds fils
ELEMENT 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
| Libre avec certaines règles
| Pas d’espaces, pas d’accents
| Premier caractère alphabetique
• Noms avec préfixe (Qualified Name)
| … • exemple: xsd:element, svg:rectangle
| Noms sensibles aux majuscules-
minuscules
• Ils évitent les collisions de noms (notion
d’espace de noms)
| Noms composés avec le caractère -
autorisés: exemple: ordre-achat

5
1/14/2009

Codage des
Processing Instructions
documents XML
Codage des caractères: <?cible instructions?>
Destiné à un programme cible
ISO-8859-1 ---> latin-1
UTF-8 ---> Unicode on 8 bits
Exemples
For Tibetan use UTF-16
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Voir les préférences d’eclipse
<?oxygen RNGSchema="file:/C:/workspace/rng/animSvg.rng" type="xml"?>

Substitutions prédéfinies Substitution: exemple


Exemple:
<math> 3 &gt; 2 Une section CDATA est plus simple
Syntaxe: &substitution; dans ce cas
</math>
Obligatoires Facultatives <source>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
"
&lt;tree:rootNode xmlns:tree="http://www.eclipse.org/emf/dom/Tree"
plus petit plus grand label="root"&gt;
&lt; < &gt; >
que que &lt;tree:childNode label="text"&gt;text&lt;/tree:childNode&gt;
&lt;tree:childNode label="comment"&gt;
&lt;!--comment--&gt;
&lt;/tree:childNode&gt;
&amp; & ampersand &quot; “ guillemets &lt;tree:childNode label="cdata"&gt;
&lt;![CDATA[&lt;cdata&gt;]]&gt;
&lt;/tree:childNode&gt;
&lt;/tree:rootNode&gt;
</source>

6
1/14/2009

Arbre et références

• La structure en arbre est insuffisante ou


Références XML nécéssiterait une duplication des
éléments dans de nombreux cas.
XML attribute types: ID, IDREF, IDREFS • Les ID permettent un accés rapides aux
éléménts en programmation DOM.

Références Références
• Les types sont précisés dans une Example
<region id="title" ... />
grammaire (DTD ou schema) ...
Type ID
• Si id est du type ID,
l’attribut id doit <body>
<img region="title" dur="3s" ... />
avoir une valeur unique value </body>
• Si ref est du type IDREF, sa valeur doit Type IDREF
correspondre à celle d’un id

7
1/14/2009

Document bien formé


Si et seulement si:

Structure en arbre respectée


+
Respect des règles de nommage

Das könnte Ihnen auch gefallen