A63 : Persistance des bases de données

Définitions de balises

SGML

À la fin des années 1960, Charles GOLDFOND, Edward MOSHER et Raymond LORIE (IBM) construisent un système puissant et portable pour interchanger et manipuler des documents légaux -> utilisation d’un langage de balises Le langage informait de la nature abstraite des informations plutôt que de leur mise en page. Les informations de mise en page était spécifiée dans un format appelé feuille de style.

L’équipe d’IBM décida également de mettre en place un système capable de rejeter des documents invalides (documents avec des informations manquantes ou en surplus) La structure de chaque type de documents fût alors strictement définie dans un fichier appelé DTD (Document Type Definition).

1969: GML (Generalized Markup Language) 1974: SGML (Standard Generalized Markup Language)

HTML + CSS (Cascading Style Sheet) créés par le W3C (World Wide Web Consortium)

XML proposé par le W3C combine la puissance et l’extensibilité de son ancêtre SGML et la simplicité imposées par la communauté du Web.

Principes :

Analyse de document XML :

Syntaxe :

=> Un document syntaxiquement correct est dit bien formé !

Les caractères autorisées

On différencie :

Certains caractères blancs seront significatifs et d’autres pas. Ex : xml<balise>C'est un caractère de _ _ _ _ _ données</balise>

On n’utilisera pas d’espaces dans les noms d’éléments et d’attributs.

Références d’entité et entités prédéfinies : &xxx; & (&) <(<) > (>) ' (’) "(")

Les balises

Définition

Un élément définit une structure, il peut avoir ou ne pas avoir de contenu (élément fils et des caractères de données). Aucun, un à plusieurs attributs peuvent lui être associés.

Définition 2

Un attribut décrit un élément. Il sera placé à l’intérieur de la balise de départ d’un élément. La valeur d’un attribut est entourée d’apostrophes.

<voiture porte='4' />

Ceci est un élément sans caractères de données.

La section CDATA n’est pas traitée par l’analyse XML. Elle peut contenir du texte, des caractères reservés et des espaces. Elle est souvent utilisée pour contenir du code script : xml<![CDATA[ _ _ _ ]]>

Les espaces de nom

La notion d’espace de nom permet d’éviter les collisions de nom.

Ex: ```xmlMath electro encephalographie


Ces deux éléments sujet peuvent être différenciés par des espaces de nom.

```xml<ecole:sujet>Math</ecole:sujet>
<medecine:sujet>electro encephalographie</medecine:sujet>```

Chaque préfixe d'espace de nom est associé à un identificateur de ressource uniforme (URI) qui identifie de façon unique un espace de nom.<br/><br/>
Pour être sûr que l'espace de nom est unique, une méthode consiste à utiliser les URL (Universal Resources Locators). Car les noms de domaines sont toujours uniques.

## Avantages de XML 

Intérêt de XML : pas toujours besoin de faire des requêtes sur le serveur, le client peut s'en occuper.


# Les DTD (Document Type Definition) 

=### Définition =

Définit la structure d'un document XML => valide sa conformité.<br/><br/>
Une DTD est définie en utilisant la grammaire EBNF (Extended Backus-Naur Form)<br/><br/>
Un document XML conforme à une DTD est dit __valide__.<br/><br/>
Un analyseur validant (Ex: Validant XML Microsoft) permet de dire si un document XML est valide ou non.

## Déclaration de document type 

```xml<!DOCTYPE nomRacine >```

La DTD peut être soit interne soit externe.

Déclaration interne : 
```xml<!DOCTYPE monMessage[ 
<!ELEMENT monMessage(#PCDATA)>
]>```

```xml<!DOCTYPE monMessage SYSTEM "maDTD.dtd"
[<!ELEMENT monElement (#PCDATA)>
]>```

Exemple : 
```xml<!DOCTYPE html PUBLIC "http://www.w3.org/TR/html4/strict.dtd">```

## Déclaration d'élements Type 

Un élément est un bloc de base d'un document XML.

```XML
	<!ELEMENT monelement (#PCDATA)>

PCDATA est la spécification du contenu, et monelement est le nom de l’élément. PCDATA veut, ici, signifier que l’élément contient des caractères de données.

La DTD permet de définir l’ordre et la fréquence des éléments fils

	<!ELEMENT classe (professeur, étudiant)>
  * Contient soit une glace soit une pâtisserie, mais pas les deux indicateurs d'occurences
```xml
	<!ELEMENT album (chanson+)> : Une occurence ou plus
	<!ELEMENT album (titre, (titre-chanson,durée)+)> : On devra spécifier une fois au MINIMUM titre-chanson.
	<!ELEMENT bibliothèque (livre*)> : On peut répéter autant de fois livre qu'on veut dans bibliothèque.
	<!ELEMENT choix (personne?)> : L'élément choix pourra avoir un élément personne ou pas.

Voici un exemple plus complet :

	<!ELEMENT ferme (fermier+, (chien*|chat?), cochon*, (chèvre|vache)?, (poulet+|canard*))>

Ceci donnera :

	<ferme>
		<fermier>Jeanne Dupond</fermier>
		<fermier>Jean Dupond</fermier>
		<chat>ponpon</chat>
		<cochon>tire-bouchon</cochon>
		<poulet>cocotte</poulet>
	</ferme>

Déclaration d’attributs

S’effectue avec le mot clé ATTLIST

	<!ELEMENT x EMPTY>
	<!ATTLIST x y CDATA #REQUIRED>

EMPTY est l’élément vide. x : nom de l’élément y : nom de l’attribut CDATA : contenu de l’attribut #REQUIRED : utilisation de l’attribut

Attributs par défaut : #REQUIRED, #IMPLIED, #FIXED.

	<!ATTLIST adresse code_postal #FIXED "67730">

Types d’attributs

Il y a 3 types différents d’attributs :

Attributs à jeton

Le type énuméré

Déclare une liste de valeurs possibles pour l’attribut. Ces valeurs sont séparées dans la définition par un ‘|’.

	<!ATTLIST personne genre (M|F) "F">

Les sections conditionnelles

Une DTD permet d’inclure ou d’exlure des déclarations en utilisant des sections conditionnelles.

	<![INCLUDE[ _ _ _ _ _]]> : donne la directive d'inclure l'élément
	<![IGNORE[ _ _ _ _ _]]> : donne la directive d'ignorer l'élément

Traitement des espaces dans les DTD

Les schémas

Les schémas étudiés ici respectent le standard W3C (World Wide Web Consortium).

Dans les schémas XML le contenu d’un élément est défini par son nom et son type. On distingue les types simples et les types complexes. Des types simples sont prédéfinis. Ex: String, Integer, decimal Un type simple ne peut pas contenir d’éléments fils ou d’attributs.

Un type complexe peut spécifier des éléments fils et des attributs associés. Les éléments peuvent être constitués d’éléments préalablement définis en utilisant les concepts d’agrégation et d’héritage.