. è DTD / Schéma : définir
4 structure d’un document XML,
4 relation entre éléments,
4 type données,
4 contraintes de contenu
Définition d’une grammaire
Ø deux principaux mécanismes vous sont offerts
Ø définir une DTD (Document Type Definition).
Ø utiliser un schema (fichier XML de définition de grammaire)
Grammaire
Exemple XHTML avec DTD externe
/b> html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ""> Exemple XML avec DTD interne
prenom CDATA #IMPLIED>
]>
…
Ex de DTD
Ex de DTD
è (#PCDATA- Parsed Character Data)
4 ces tags ne peuvent que contenir des données textuelles
è FORMATION (TITRE, DUREE, PREREQUIS,
OBJECTIF, CONTENU, ANIMATEUR+)>
4 le tag racine () va contenir
§ un titre (et obligatoirement un),
§ puis une durée,
§ un pré-requis,
§ un objectif,
§ un contenu
§ et des animateurs (un ou plus)
è CONTENU(CHAPITRE)*>
4 le contenu est lui même composé. Il peut contenir un nombre quelconque de chapitre (0 ou plus)
è CHAPITRE(TITRE, SECTION*)>
4 Un chapitre étant constitué d'un titre et d'autant de sections que nécessaire
Validation d’un shéma XML
è outils de validation, pour vérifier qu'un document de données et bien conforme à la grammaire (DTD ou Schema) du langage
4 XMLint
4 XMLSpy
4 ValidateXHTML
4 …
è la validation de la grammaire n'est pas une étape obligatoire pour pouvoir présenter un document.
Affichage et Mise en page d'un doc XML
è les tags dont nous avons parlé dans FML on été choisis par nos soins.
4 Comment le navigateur pourrait t'il les connaître ?
è Tout comme il nous a fallut spécifier qu'elles étaient les règlesd'imbrications des tags, il va nous falloir définir comment chaque tag vase présenter
è Si nous ne spécifions rien, le navigateur ne saura pas quoi faire.
Par défaut,les navigateurs se contentent simplement d'afficher le fichier XML en question.
è Alors que le Html a été conçu pour afficher de l'information, le XML a été créé pour structurer de l'information. Il ne fait rien d'autre !
è Le XML n'est que de l'information encodée entre des balises. Il faudra d'autres éléments, comme par exemple un fichier XSL, pour que le navigateur puisse "comprendre" vos balises et afficher ce fichier sous une forme plus conviviale
Affichage et Mise en page d'un doc XML
Résultat si on ne spécifie pas le tag qui précise la feuille de style
Exemple : mise en page
èPréciser feuille de stype
4Ajouter :stylesheettype="text/xsl"href="" ?>
Exemple : mise en page
è Ligne d’affectation feuille de stype
4 stylesheettype="text/xsl"href="" ?>
èCette ligne d'affectation de feuille de styles contient principalement deux parties.
4La première indique le langage de feuille de style utilisé.
- deux langages potentiellement utilisables avec XML :
- CSS (Cascading StyleSheet) et
- XSL (eXtensible stylesheetLanguage).
4La deuxième information à fournir est la localisation du fichier de style
- (href signifiant Hypertext REFerence).
Exemple : mise en page
è XSL prend en entrée
4 un fichier de données XML
4 un fichier de règles XSL
è après de multiples transformations, renvoie 4 un autre fichier XML.
Exemple : mise en page CSS
Exemple : mise en page XSL
XSL (eXtensible Stylesheet Language)
Bcp de travail pour peu de résultats :-( … mais
XSL : principe
èLe XSL ne permet pas uniquement l'affichage de XML. Il permet aussi :
– de sélectionner une partie des éléments XML
– de trier des éléments XML
– de filtrer des éléments XML en fonction de certains critères
– de choisir des éléments
– de retenir des éléments par des tests conditionnels è Principe de fonctionnement
è le XSL est dérivé du XML.
– doc XSL reprend structure & syntaxe de n'importe quel doc XML
è le document XSL comporte un document Xhtml qui sera quant à lui reconnu par le navigateur et qui servira de support à tout ou partie des données du document XML associé
è le XSL fonctionne avec une ou plusieurs "templates", sorte de gabarit pour définir comment afficher des éléments du fichier XML. Les éléments concernés du fichier XML sont déterminés par l'attribut "match".
XSL : un exemple
è
– XSL est dérivé du XML ==> doc XSL commence par déclaration XML
è
– namespace du W3C: xmlns:xsl=" è
– balise template et son attribut match
– Cette balise template va déterminer un gabarit dans lequel on va transformer des éléments du fichier XML sous une forme que le navigateur pourra afficher
– Les éléments du fichier XML sont déterminés par l'attribut match="/".
– Le "/" signale que sont concernées toutes les balises XML du document associé à partir de la racine
XSL : un exemple
è
– Début partie Html qui servira de support pour l'affichage du document dans le navigateur
– Ensuite . diverses balises Html et XSL Par exemple :
è
– : permet de sélectionner un élément du fichier XML associé pour le traiter dans le fichier XSL.
– Dans l'attribut select, on détermine chemin d'accès vers la balise XML souhaitée (puisque le XML est structuré) è //Fin de la partie en Html.
è
– fermeture de la balise de template.
è
– Le document XSL se termine obligatoirement par la fermeture de la balise de déclaration de document XSL
Foule sentimentale Alain Souchon Solaar pleure MC Solaar Chambre avec vue Henri Salvador |
XSL : un autre exemple
XSL : un autre exemple (suite)
Trier avec XSL
è order-by="+balise" : trier par ordre croissant (+) les données comprises entre la balise désignée"
è order-by="-balise" : trier en ordre décroissant
4order-by="+artiste">
Filtrer avec XSL
è XSL permet de filtrer les données du fichier XML associé selon des critères comme égal (=), pas égal (!=), plus grand que (>), plus petit que (<)
è Utiliser l'attribut select="chemin_d'accès[balise='xxx']"
select="compilation/mp3[artiste='Alain Souchon']">
Choisir avec XSL
è balises Html
è effectuer un choix dans les données du fichier XML
è On ajoutera l'attribut match où l'on indique l'élément choisi
|
|
Choix conditionnels avec XSL
Javascript et XSL
è Possibilité d'utiliser un script en Javascript pour faire la transformation du XML & XSL en Html
– Construire fichier Html avec code Javascript qui va transformer nos fichiers XML et XSL en un seul fichier Html
// chargement du fichier XML
var xml = new ActiveXObject("Microsoft.XMLDOM") xml.async = false ("")
// chargement du fichier XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM") xsl.async = false ("")
// transformation en Html document.write(xml.transformNode(xsl))
XSL : langages
è Le XSL comporte 3 langages :
– XSLT
• langage qui Transforme un document XML en un format, généralement en Html, reconnu par un navigateur
– Xpath
• permet de définir & adresser des parties de document
XML
– XML Formatter
• pour "formater" du XML (transformé) de façon qu'il puisse être rendu sur des PCpockets ou des unités de reconnaissance vocale
Xpath : principe
è Langage d'interrogation pour localiser une portion d'un document XML è Une expression XPath est un chemin constitué de pas de localisation.
è Les pas de localisation ont chacun trois composants :
– 1. un axe ;
• indique la direction dans laquelle se déplacer dans l'arbre XML, relativement au nœud courant ou depuis la racine.
• ex, child:: sélectionne nœuds enfants du nœud courant
• Un autre axe largement utilisé est celui des attributs, représenté avec le caractère @
– 2. un test de nœud ;
• sélectionner nœuds en fonction de leur nom ou type.
• ex, text() sélectionne les nœuds de type texte
– 3. des prédicats
• expressions utilisés pour filtrer les nœuds sélectionnés par l'axe et le test de nœud.
• Les prédicats sont écrits entre crochets (« [ », « ] »). Si le prédicat est évalué à vrai, les nœuds correspondants seront sélectionnés.
Xpath : exemple
/ sélectionne un nœud "fictif", qui englobe tout le document
//article sélectionne tous les éléments "article" du document où qu'ils soient /racine/cours sélectionne l'unique élément "cours" puisqu'il est ici le seul fils de "racine" portant ce nom
//article[@nom='XPath'] sélectionne tous les éléments "article" du document où qu'ils soient, ayant un attribut "nom" dont la valeur est "XPath"
Le résultat de ces sélections dépendra de la nature de la tâche :
* En affichage: ce sera la valeur textuelle, propre à chaque type d'élément, qui apparaîtra * En sélection, il se comportera comme un pointeur sur lequel d'autres requêtes XPath pourront être effectuées.
Xquery : principe
Langage de requête permettant (W3C) d'extraire des infos d'un doc ou d'une collection de docs XML d'effectuer des calculs complexes à partir des informations extraites et de reconstruire de nouveaux documents ou fragments XML.
XQuery joue par rapport aux données XML un rôle similaire à celui du langage SQL vis-à-vis des données relationnelles
Syntaxes
FLWOR : … for, let, where, order by et return
XQueryX (XML Syntax for Xquery) dans laquelle une requête est un document XML.
De ce fait, elle est beaucoup plus verbeuse et moins lisible que la précédente
est destinée à des manipulations formelles par des programmes
Xquery : un exemple
Exemple : C/C
è XML,
4permet de définir langage de balisage adapté à vos besoins
è Pour ce faire, il vous faut définir
4une grammaire è comment correctement utiliser les tags - Des outils de validations de grammaire sont dispo.
- Deux sous langages pour définir grammaire :
- une DTD (Document Type Definition) ou
- un Schéma (grammaire XML bien définie)
è Possibilité d’adjoindre une feuille de styles à votre langage,
4 cela vous permettant de présenter vos données.
4 deux langages sont utilisables :
- CSS (Cascading StyleSheet) et
- XSL (eXtensible Stylesheet Language). (plus puissant que CSS)
Plan
è Introduction au langage XML
èUn premier exemple
èRègle de syntaxe XML
èMise en œuvre d’une DTD
Syntaxe : règles de base
è un fichier XML utilise des tags pour structurer ses données.
4 Différentes règles existent pour régire l'utilisation des tags
è La notion de tags XML
4 A l'instar d'HTML, XML utilise aussi des tags (marques/balises).
4 Un tag commence par le caractère et se termine par le caractère >.
4tags ouvrant : ex CHAPITRE>
4tags fermant : ex CHAPITRE>
è règles syntaxiques élémentaires
4 Règle n° 1 : si le fichier est syntaxiquement incorrect, le traitement du fichier aboutira à une erreur.
4 Règle n° 2 : Tout tag ouvrant doit obligatoirement être fermé plus loin dans le fichier (? HTML)
Syntaxe : règles de base
è forme compacte pour représenter un couple de tags XML ne contenant pas de données.
4 Il suffit du fournir un unique tag commençant par le caractère
Jour="26" Mois="08" Année="1973">
Jour="26" Mois="08" Année="1973" />
4 Règle n° 3 : distinction entre lettres minuscules et lettres majuscule 4 Règle n° 4 : nom de tags
- ne doit pas commencer par XML
- ne contient que lettres, chiffres, -, _, . et :
- ne peuvent commencer que par un _ ou une lettre
imbrication des tags XML
4 Règle n° 5 : les tags ne devrons en aucun cas se chevaucher - ils se doivent d'être imbriqués les uns dans les autres.
4 Règle n° 6 : tout doc. XML, doit et ne peut avoir qu'un seul tag racine
- Tous les autres tags du doc. se devront d'être contenus dans ce tag
FAUX
bonnes pratiques
è opter pour nom de tags clairs et explicites (même s'ils sont plus long)
è bien comprendre ce que vous devez faire des données comprises dans vos tags.
4 Le choix de votre structure peut influer sur la suite des choses (comment récupérer les données dans une feuille de styles, par ex).
26/08/1973 ou
26
08
1973
les attributs
è Les attributs d'un tag sont fournis à la suite du nom du tag
4 séparés par un espace.
è attribut = deux parties : nom et valeur.
4 La valeur doit être comprise soit entre des simples quottes soit entre des doubles guillemets.
• ==> incorrect • ==> correct
4 Le nom est séparé de la valeur par le signe d'égalité.
Donnée du tag
les attributs
è valeur d'attributs ou données de sous-tags ?
4un attribut vient qualifier la données d'un tag. Cela rajoute un complément d'information utile pour le traitement de la données.
4un attribut ne doit pas contenir la donnée principale.
4Ex : dans le cas d'une date, il est clair que l'information principale est constituée du jour, du mois et de l'année.
§ Ces trois infos devraient donc normalement être des données de tags
26
08
1973
est donc préférable à
26/08/1973
ou alors (pour feuille de style)
26/08/1973
attributs prédéfinis
Ø xml:lang è langue utilisée dans une partie du document Ø xml:space è caractères de séparation.
è obligation de les redéfinir dans la DTD si validation (sémantique) è attribut et valeur sont cascadés sur tous les sous-tags.
4 Il est donc possible de ne spécifier qu'une unique fois xml:lang (par ex) pour tout le document : il suffit de le définir sur le tag racine.
• Aquarelle
Syntaxe : Version du XML et système d'encodage
Ø è 1ère ligne : version 1.0, 1.1, 1.2 ou 1.3 Ø Indique aux outils XML norme codage (ISO-10646), ….
Ø xml:space è caractères de séparation.
è obligation de les redéfinir dans la DTD si validation (sémantique) è attribut et valeur sont cascadés sur tous les sous-tags.
4 Il est donc possible de ne spécifier qu'une unique fois xml:lang (par ex) pour tout le document è il suffit de le définir sur le tag racine.
è Ne rien spécifier è norme ASCII è Si accents Alors message d'erreur Syntaxe :Version du XML et système d'encodage
Syntaxe :Version du XML et système d'encodage
Syntaxe : Liaison à une feuille de styles
Ø Feuille de style è Affichage dans navigateur
Ølangages CSS ou XSL
Ø Liaison è rajouter "
4L'attribut type : spécifier langage utilisé ("text/css" ou "text/xsl")
4L'attribut href indique la localisation du fichier
Liaison à une DTD
Ø DTD è définir une grammaire XML
Ø Outils de validation è contrôler la bonne utilisation des tags dans un fichier Ø DTD peut directement être embarquée dans le fichier de données.
- Dans ce cas, la DTD ne sert que pour cet unique fichier
Ø nom associé à la DTD doit être exactement identique au nom du tag racine,
notion de namespaces
Ø Deux grammaires XML distinctes définissent des tags qui pourraient vous convenir
Ø Est-il possible de définir une grammaire qui inclue ces deux langages ?
Ø Considérons aussi, que chacune des deux grammaires sur lesquelles vous vous appuyez définissent un même nom de tag, par ex ,
mais dont leurs utilisations et leurs significations seront différentes d'un langage à un autre.
Ø Comment dire que l'on cherche à utiliser l'un des deux tags ?
notion d'espaces de noms
• nom complet, de tag est constitué de deux parties séparées par ":". •1ère partie spécifie dans quel espace de noms le tag est défini
•2nd nomme le tag.
- On peut avoir FirstLang:DATE> et SecondLang:DATE> sans risque de confusion.
notion de namespaces
Ø Pour garantir l'unicité du tag, un espace de noms est généralement associé à une URL
Ø chaque société possède bien sa propre URL.
• deux sociétés peuvent définir deux langages utilisant des tags similaires sans risque de conflits.
| | |
|
|
Quelques caractères Grecque : 931; Π Φ |
|
Ω |
|
| | |
|
|
|
|
|
Quelques caractères Grecque : ? ? ? ? |
|
|
|
Injection de caractères Unicode
Ø Il est possible d'insérer n'importe quel caractère Unicode.
Ø "" valeur Unicode du caractère souhaité puis ";".
Utilisation des entités prédéfinies
Ø pour structurer flux XML, il vous faut, au moins, insérer des tags.
Ø dans ce cas, comment insérer caractère d'infériorité dans vos données ?
> Greater than >
& | Ampersand | & |
" | Quote | " |
' | Apostrophe | ‘ |
Plan
è Introduction au langage XML
èUn premier exemple
èRègle de syntaxe XML
èMise en œuvre d’une DTD
Mise en oeuvre d'une DTD : intro
Ø même si syntaxe correcte, ce n'est pas pour autant que vous les avez utilisé correctement les un par rapport aux autres, relativement à leur sémantique !!
Ø Pour valider que vos fichiers de données sont grammaticalementcorrecte, vous allez utilisez un langage de définition de grammaire XML.
ØDTD
Ølangage de schémas
Mise en oeuvre d'une DTD : définitions
|
|
document bien formé |
|
|
|
Ø |
respecte bien toutes les règles de syntaxes XML. |
|
|
document valide
Ø doc bien formé + respect une grammaire donnée
Voir environnement de travail XMLSpy
Ou définir une DTD ?
Ø Il existe deux possibilités pour définir une DTD.
Ø Soit vous embarquez votre DTD au sein d'un fichier de données, Ø soit la définir dans un fichier externe.
Ø Les deux techniques peuvent même être mixées.
Ø La 2nde alternative est préférable.
Ø plus simple de partager votre DTD pour un ensemble de documents.
Ø dans les deux cas, que votre DTD va devoir être nommée.
Ø Ce nom se doit obligatoirement d'être celui du tag racine de vos fichiers de données (aux minuscules et majuscules près).
Définition d'une DTD embarquée
Ø Si vous embarquez votre DTD dans un fichier de données, elle sera alors localisée dans le prologue, au niveau du tag
DOCTYPE >.
Définition d'une DTD dans fichier externe
Ø Pour lier un fichier de données à une DTD, il vous faut aussi utiliser le tag
Ø mot clé SYSTEM utilisé pour indiquer ou se trouve la DTD
Ø c'est une URL qui est attendue.
Ø Vous pouvez donc lier vos fichiers à une quelconque DTD présente sur le Web.
Définition des règles d'utilisation des tags
Ø une DTD définie
Ø des tags et leurs règles d'imbrication,
Ø des listes d'attributs et des entités
Ø …
Ø Exemple : petit langage de définition de tableaux
Définition de tags contenant des données
Ø deux types de tags :
Ø ceux qui contiennent des données textuelles
Ø ceux qui contiennent des sous tags
Cas 1 : tags qui contiennent des données textuelles
Un agenda est constitué d'un nombre indéterminé de personnes Une personne doit posséder un nom puis un prénom (facultatif) puis une date de naissance Architecture web – Partie II En HTML, le tag HR (Horizotal Rule) est définie Page 67 |
Définition de tags contenant des sous tags
? | Occurrence: peut apparaître 0 ou 1 fois. |
+ | Occurrence: peut apparaître 1 ou plusieurs fois. |
* | Occurrence: peut apparaître 0 ou plusieurs fois. |
, | Séquence: Les 2 parties doivent apparaître et dans cet ordre |
| | Choix: permet de choisir entre deux alternatives. |
ANY | Choix: le tag peut contenir n'importe quoi. |
EMPTY | Le tag ne peut strictement rien contenir. |
Exemples
comme étant unitaire : il ne contient rien.
Définition de tags contenant des données
Ø
Ø soit contenir nbre qlq de cellules de données soit nbre qlq de cellules d'entête
Ø
Ø on peut avoir un nombre quelconque de cellules. Chacune de ces cellules pouvant être soit une cellule de titre, soit une cellule de données.
| | |
TABLEAU> |
|
Titre du tableau |
|
|
|
\ |
|
| | |
Statistique 1 |
|
Statistique 2 |
|
|
|
|
|
|
… |
|
|
|
|
|
DTD : Définition de tags contenant des données
Ø un tableau peut contenir un nombre quelconque de ligne, mais au plus un seul titre (ce dernier étant facultatif).
| | |
TABLEAU> |
|
Titre du tableau |
|
|
|
\ |
|
|
Statistique 1 |
|
Statistique 2 |
|
|
| | |
| | |
|
|
… |
|
|
|
|
|
|
DTD : Définition de tags contenant des données
Ø ATTLIST è introduire une liste d'attributs,
Ø ATTLIST, suivi du nom du tag et des donnéesdescriptives de chaque attribut.
DTD : Aspects avancés de définition d'attributs
Ø Si vous ne fournissez pas val par défaut, trois alternatives sont offertes
Ø #REQUIRED : valeur de l'attribut est à fournir obligatoirement
Ø Si un fichier de données contient un tag, pour lequel un attribut estobligatoire, et si aucune valeur n'est fournie alors le document générera un message d'erreur.
Ø #FIXED : forcer un attribut à une valeur donnée.
Ø l'attribut existe. Sa valeur estimposéeet l'utilisateur ne pourra pas la changer.
– Il ne sera même pas possible de spécifier l'attribut dans le fichier de données XML Ø #IMPLIED : définir un attribut facultatif
Ø attention,ce n'est pas la valeur qui est facultative(car fournie par défaut), mais bien l'utilisation de l'attribut.
Ø #REQUIRED : valeur de l'attribut est à fournir obligatoirement
Ø Si un fichier de données contient un tag, pour lequel un attribut est obligatoire, et si aucune valeur n'est fournie alors le document générera un message d'erreur.
Ø #FIXED : forcer un attribut à une valeur donnée.
Ø l'attribut existe bien. Sa valeur est imposée et l'utilisateur ne pourra pas changer cette valeur. Il ne sera même pas possible de spécifier l'attribut dans le fichier de données XML
Ø #IMPLIED : définir un attribut facultatif :
Ø attention, ce n'est pas la valeur qui est facultative (car fournie par défaut), mais bien l'utilisation de l'attribut.
Ø Exemple : l'attribut alt du tag en HTML.
Ø permet de définir le texte alternatif de l'image : il apparaît, sous forme d'infobulle, si vous laisser la souris immobile sur l'image pendant quelques instants.
Ø L'attribut est facultatif : s'il n'est pas fournit, aucune info-bulle n'apparaîtra (même pas une info-bulle sans texte).
>
XML Shema
• permettant de définir la structure d'un document XML.
• Une instance d'un XML Schema est un peu l'équivalent d'une DTD, MAIS
– XML Schema est plus riche : ex. permet par exemple de définir des domaines de validité pour la valeur d'un champ
– XML Schema est lui même un document XML, alors que DTD est doc SGML
Objectifs généraux des schémas
• XML schéma est l’analogue
– D’un langage de définition de données DDL des bases de données
• un document est l’analogue d’un article d ’une BD
– D’un langage de syntaxe abstraite des réseaux comme ASN1
• un doc est l’analogue du contenu en syntaxe de transfert (BER ‘Basic Encoding Rules’).
– D’un langage évolué dans sa partie définition de données comme C++ ou Java.
• Un schéma définit l’analogue d ’une classe et • un document est une instance de cette classe.
• Un document XML doit pouvoir être validé relativement à son schéma
XML Shema: Objectifs
1. - Structures –
• Définir la structure et les contenus des documents.
• Définir des relations d’héritage.
2. - Typage des données –
• Fournir un ensemble de types primitifs.
• Définir un système de typage suffisamment riche.
• Distinguer les aspects reliés à la représentation lexicale des données de ceux gouvernant les données.
• Permettre de créer des types de données usagers dérivés de types existants en contraignant certaines propriétés
– domaine, précision, longueur, format
Les structures
Typage des données
Principes généraux des schémas
Un schéma XML est un document XML
xmlns:xsd=";>
Exemple d’adresse postale en XML: le document
Mr Jean Dupont
rue Camille Desmoulins
Paris
Seine
75600
DTD d’une adresse postale
/p> [ (nom, rue, ville, département, code_postal)> ]> |
Typage d’une adresse postale au moyen d’un schéma XML
Le langage XML schémas : Les composants primaires
• Un schéma XML est construit par assemblage de différents composants
– 13 sortes de composants rassemblés en différentes catégories
• Composants de déclaration
• Déclaration d’éléments.
• Déclaration d’attributs.
•Composants de définition de types
• Définition de types simples (Simple type).
• Définition de types complexes (Complex type).
Déclaration des éléments
•Un élément XML est déclaré par la balise ‘element’ de XML schéma qui a de nombreux attributs
•Les deux principaux attributs sont
- name : Le nom de l’élément (de la balise associée). - type : Le type qui peut être simple ou complexe.
Exemple de base
Déclaration des attributs
• Un attribut est une valeur nommée et typée associée à un élément.
• Le type d’un attribut défini en XML schéma est obligatoirement simple
…
Autres attributs
• L'élément attribute de XML Schema peut avoir 2 attributs optionnels :
– Use
– Value
• On peut ainsi définir des contraintes de présence et de valeur
• Selon ces deux attributs, la valeur peut – être obligatoire ou non
– être définie ou non par défaut
•Exemple:
Valeurs possibles pour use
• Use = required
– L’attribut doit apparaître et prendre la valeur fixée si elle est définie.
• Use= prohibited
– L’attribut ne doit pas apparaître.
• Use = optional
– L’attribut peut apparaître et prendre une valeur quelconque.
• Use= default
– Si l’attribut à une valeur définie il la prend • sinon il prend la valeur par défaut.
• Use= fixed
– La valeur de l’attribut est obligatoirement la valeur définie.
• Exemple :
–
Types simples : SimpleType
•‘SimpleType’ : ==> définir des éléments ou attributs non structurés – dérivés d’une chaîne, d’un entier, etc.
– Types simples prédéfinis au sens de la norme XML Schémas ‘ datatypes’: string, integer, boolean
–
– Types simples définis par dérivation d'un autre type simple, au moyen de l’élément
– Exemple de type simple : dérivation par restriction
Types complexes : complexType
Déclarés au moyen de l'élément
Trois façons de composer des éléments dans un type complexe :
sequence, choice, all.
Types complexes: Sequence
Un type sequence est défini par une suite de sous-éléments qui doivent être présents dans l'ordre donné.
Le nombre d'occurences de chaque sous-élément est défini par les attributs minOccurs et maxOccurs.
Types complexes: Choice
Un seul des éléments listés doit être présent
Le nombre d'occurences possible est déterminé par les attributs minOccurs et maxOccurs de l’élément.
Types complexes: All
C’est une composition de type ensembliste
Dans un document conforme, les éléments listés doivent être tous présents au plus une fois.
Il peuvent apparaître dans n'importe quel ordre.
Structure
Les types de données XML schéma
Objectifs de la définition des types
• Fournir des types primitifs analogues à ceux qui existent en SQL ou Java
• Définir un système de typage suffisamment riche pour
– importer/exporter des données d’une base de données
• Distinguer les aspects reliés à la représentation lexicale des données de ceux gouvernant les ensembles de données sous-jacents
• Permettre de créer des types de données usagers dérivés de types existants en contraignant certaines propriétés (domaine, précision, longueur, format).
Système de typage des schémas
• Trois composantes
– L’ensemble des valeurs du type (‘value space’)
• Ex: type float
– L’ensemble des représentations lexicales possibles des valeurs (‘lexical space’).
• Ex: "10" ou "1.0E1"
– L’ensemble des facettes (l’ensemble des propriétés) qui définit l’ensemble des valeurs
• Ex: Le type float est défini par la norme IEEE 754-
1985 (c’est un flottant simple précision sur 32-bit).
• On peut dériver des types par contraintes.
Définitions relatives aux types
•Types primitifs (‘Primitive’) Non défini en référence à d’autres types.
•Types dérivés (‘Derived’) Définis par dérivation à partir d’autres types
•Types prédéfinis (‘Built-in’) Définis dans le cadre de la spécification XML Schéma datatypes (primitif ou dérivé).
•Types usagers (‘User-derived’) Types construits par les utilisateurs.
•Types atomiques (‘Atomic’) Types indivisibles du point de vue de la spécification XML schéma.
•Types listes (‘List’) Types dont les valeurs sont des listes de valeurs de types atomiques.
•Types unions (‘Union’) Types dont les ensembles de valeur sont la réunion d’ensemble de valeurs d’autres types.
Quelques types prédéfinis
Type | Forme lexicale |
String | Bonjour |
boolean | {true, false, 1, 0} |
float | 2345E3 |
double | 23.456789E3 |
decimal | 808.1 |
dateTime | 1999-05-31T13:20:00-05:00. |
binary | 0100 |
uriReference ….
Dérivation de types simples
1- Dérivation par restriction
La dérivation par restriction restreint l’ensemble des valeurs d'un type pré existant.
La restriction est définie par des contraintes de facettes du type de base: valeur min, valeur max
Exemple :
Les contraintes de facettes
• lenght : la longueur d’une donnée.
• minLenght: la longueur minimum.
• maxLenght: la longueur maximum.
• pattern: défini par une expression régulière.
• enumeration: un ensemble discret de valeurs.
• whitespace: contraintes de normalisation des chaînes relativement aux espaces (preserve, replace, collapse).
• maxInclusive: une valeur max comprise.
• maxExclusive: une valeur max exclue.
• minInclusive: une valeur min comprise.
• maxInclusive: une valeur min exclue.
• totalDigits: le nombre total de chiffres.
• fractionDigits: le nombre de chiffres dans la partie fractionnaire.
Exemple d’une énumération
Dérivation de types simples
2 - Dérivation par extension
• Dériver un nouveau type par extension consiste à ajouter à un type existant des sous-éléments ou des attributs.
• On obtient inévitablement un type complexe.
• Exemple
230
Dérivation de types simples
3 - Dérivation par union
Pour créer un nouveau type on effectue l’union ensembliste de toutes les valeurs possibles de différents types existants. Exemple:
Dérivation de types simples
4 - Dérivation par liste
Une liste permet de définir un nouveau type de sorte qu’une valeur du nouveau type est une liste de valeurs du type pré existant (valeurs séparées par espace). Exemple
33600 56000
Autres aspects XML :
Définition d'entités internes
Ø Quoi ? Une entité est qualifiée d'interne si sa définition est directement embarquée dans la DTD.
Ø Pourquoi ? pouvoir remplacer autant de fois que nécessaire l'entité par le texte qui lui est associé.
Ø ( similaire à #define de C)
Définition d'entités externes
Ø Pourquoi ? permet de substituer au nom de l'entité un contenu localisé dans un autre fichier.
Ø Exemple : Nous avons deux fichiers XML : chacun de ces fichiers définit un chapitre d'un livre.
| |
| | |
|
|
|
|
|
SYSTEM""> |
|
|
SYSTEM""> |
|
| |
| |
|
]> |
|
|
|
|
|
XML blabla |
|
&auteur; |
|
|
&chapitre-1; |
|
|
&chapitre-2; |
|
|
|
|
|
| | | |
Définition d'entités externes
Définition d'entités externes
Un standard très utile en réseaux/systèmes répartis
Indispensable comme outil d’interopérabilité en univers réparti.
Entre des applications WEB.
Dans des approches objets répartis comme SOAP (‘Simple Object
Protocol’)
WSDL (‘Web Service Definition Language’).
Entre des bases de données hétérogènes.
Quelques reproches
Les performances.
Les imperfections à découvrir dans les choix de conception du système de typage.
Domaines d’utilisation
• Publication d’informations sur le WEB.
• Commerce électronique.
• Gestion de documents traditionnels.
• Assistance à la formulation et à l’optimisation des requêtes en bases de données.
• Transfert de données entre applications en réseaux.
• Contrôle de supervision et acquisition de données.
• Échange d’informations de niveau méta.
•
XML s’impose …
è XML est en passe de devenir le standard utilisé par les e/ses pour échanger/stocker/traites données dans des documents structurés,
4 que ce soit en interne,
4 avec des partenaires commerciaux ou
4 dans des applications accessibles à tous sur internet.
è Toutefois, les données échangées sont souvent stockées dans une BD relationnelles ou autre …
è Il faut donc mettre en place un processus de traduction des données du format actuel de la base en XML, puis du XML au format utilisé pour le traitement des données.
XML s’impose …
è Solution : utiliser certains des outils disponibles avec les BD relationnelles, comme Oracle9i et IBM DB2.
4 traduire en XML les données (en exécution), structurées ou non.
è Toutefois, cela risque d'augmenter les temps de traitement des transactions XML et de ralentir également les autres applications qui accèdent à la BD relationnelles.
è Les solutions relationnelles DB2 (IBM), SQL Server (Microsoft), Oracle 10g et ASE (Sybase) sont livrées en cas de besoins avec une sur-couche (moteur) permettant de générer des structures de données multidimensionnelles
è Traduction = traitements plus longs
è autre approche ? BD XML natives
4 Ces BD ne remplacent pas les BD relationnelles.
4 Elles servent plutôt de cache intermédiaire entre les applications web et les sources de données pour améliorer les performances.
Apports …
è accélérer le processus,
è Echange
4traduire des données provenant de plusieurs sources en XML.
4Ainsi, toutes les applications qui doivent échanger des données XML n'ont plus qu'une seule BD XML native à utiliser pour mettre les documents XML en cache.
§ Ce qui réduit les besoins de traitement que requiert la gestion des traductions XML.
èLes outils sont fournis par les BD compatibles XML permettent :
§ d´interroger le document,
§ sélectionner les informations,
§ conserver et cataloguer les différentes versions de contenus, etc.
èStockage dans une BD XML permet déffectuer des requêtes
4Il est alors possible d´appliquer le principe de recherche et d'extraction d´informations à différentes activités telles que
§ le travail collaboratif,
§ les échanges entre entreprises.
4Catégorisés et classés, les détails d´un projet peuvent en effet être retrouvés plus facilement.
è Exemple
4offrir différentes vues de ses informations générées à partir d´un document : titre et chapeau de l´article uniquement, totalité du document, parties relatives à un sujet spécifique demandé par le visiteur, etc.
§ permet à un éditeur de dictionnaire généraliste, par exemple, d'extraire tous les mots relatifs à la botanique et sortir un dictionnaire spécifique.
è toute information extraite d´une base XML est structurée par son balisage, lequel peut être exploité par le destinataire è Ce dernier peut :
4 automatiquement classer l'information dans sa propre base XML,
4 la publier sur son site ou encore dans une base de données relationnelle en s'appuyant sur des mécanismes normalisés de transformation des données pour adapter l'information à son propre format de publication ou de stockage.
è Non répudiation
4stockage XML permet de respecter et conserver le document dans son intégralité
4Si, par exemple, les informations d´une facture sont éclatées dans une base de données relationnelle, l´intégrité du document original est perdue. Il nést donc plus exploitable en cas de litige".
4 BD XML : sont dotées de fonctions de gestion des versions
§ peuvent en outre cataloguer les évolutions d´un document et ainsi restituer les différentes étapes d´un projet ou d´une commande.
è outils de requête et de gestion des versions
4 è gestion de contenu ou historisation de documents 4 MAIS : seule l´information balisée peut être restituée.
è Lourd, ce travail de balisage peut parfois être automatisé mais implique de profonds bouleversements dans les habitudes de travail des émetteurs de documents, des migrations lourdes en termes de compétences, de solutions techniques, etc.
è Avant de basculer en XML, de bien peser les implications, le stockage en XML constituant finalement la partie la plus simple d´un tel projet.
Les principales bases XML du marché
è La majorité des bases relationnelles du marché - Oracle 9i d´Oracle, Sybase ASE de Sybase, SQL Server de Microsoft, DB2 d´IBM - disposent de fonctions plus ou moins élaborées pour gérer et exploiter les documents en XML.
è En parallèle de ces offres, il existe des bases de données "natives" XML, conçues spécifiquement pour ne gérer que des contenus XML:
4 Software AG (Tamino),
4 Ixiasoft (TextML),
4 Ipedo (XML Database), etc.
SGBDR et XML : le tour de l'offre
Développemen
Editeur/NomOSSécuritéXML
IBM DB2 | Linux, UNIX, Windows | C++, Cobol, JDBC et PHP | Chiffrement : triple DES et DEA Authentification (LDAP) |
t
Traduction des documents XML pour les intégrer à la structure relationnelle de la base.
Oracle Oracle10g | Linux, Mac OS X, UNIX et Windows | PLSQL, JDBC et C++ | Chiffrement : triple DES et AES. Authentification (LDAP) |
Intégration de contenus XML, description de la structure au format XML et, à l'inverse, des données
SQL Server Microsoft | Windows | ODBC, C++, Visual Basic, .Net | Chiffrement : RC4, DES, PCT et SSL. Authentification (ActiveDirectory) |
XML sous forme relationnelle
Support des données XML de manière native et définition de tables dans le même format.
Stocke et indexe les fichiers XML. Support des requêtes au format XQL lancées sur cette catégorie de contenu
Sybase ASE | ac OS X, UNIX, Windows. | ODBC, JDBC, C++, Perl et PHP | SSL. Authentification |
Chiffrement :
(LDAP)
BD relationnelles Open Source et XML : le tour de l'offre
Développemen Editeur/NomOS t | Sécurité | XML |
Interbase | Linux, UNIX, C++ et Java Windows | Authentification | Stocke et indexe les fichiers XML. |
MySQL | ODBC, JDBC, Linux, Mac OS X, C++, Java, UNIX et Windows Perl, PHP et Ruby | Chiffrement : SSL. Authentification et identification (X509) | Stocke et indexe les fichiers XML. |
PostgreSQ L | ODBC, JDBC, Linux, Mac OS X, PL/SQL, C++, Unix, et Windows Perl, PHP, TLC et Ruby | Chiffrement : SSL. Authentification (HTTP). | Stocke et indexe les fichiers XML. Support des fonctions XPath. |
MaxDB | ODBC, C++, Linux, Unix, et JDBC, Perl et Windows PHP | Chiffrement : SSL. Authentification (HTTP). | Stocke et indexe les fichiers XML. |
BD XML : le tour de l'offre
Développemen
Editeur/NomOSSécuritéXML
t
COM, Java et
Ipedo SOAP. Support Gestion de contenu XML
XML Linux, UNIX, Windows des requêtes par le biais d'un système
Database XPath et de catégorisation
XQuery
ODBC, JDBC, L'outil s'appuie sur le
IXiasoft C++, Java, "parser" d'IBM pour
Windows
TextML Perl, PHP et indexer l'ensemble des attributs XML sous forme
Ruby de meta-données
ODBC, JDBC, Chiffrement : JCE,
Software C++ et COM. Bouncy Castle et Combine une base de
AG Linux, UNIX et Windows Support des requêtes FlexSecure. Authentification données XML à une base de données relationnelle.
Tamino XPath et (XKMS) XQuery
XPEERiON Java. Support Un connecteur pour .Net est en préparation.
des requêtes
Windows Agilience devrait être
XPath et
Agilience XQuery prochainement porté sous
Linux
BD XML Open Source : le tour de l'offre
Editeur/NomOS | Développemen t | Sécurité | XML |
Apache Xindice | Linux, MacOS X et Windows | Java. Support de SOAP et des requêtes XQuery et XML:DB | | Stocke et indexe des fichiers XML ou non au sein d'une structure dans le même format. |
eXist | Linux et Windows. | Java. Support de SOAP et des requêtes XQuery et XPath | Authentification (Cocoon). | Stocke et indexe des fichiers XML au sein d'une structure dans le même format |
Galax : open-source implementation of XQuery (et XPath)
Editeur/NomOS | Développemen t | Sécurité | XML |
Hyperion Essbase | UNIX et Windows | OLAP. Java, C++ et Visual Basic. Support des requêtes XML MaxL DML | Chiffrement SSL. Authentification (LDAP) | Les connecteurs pour Essbase sont nombreux |
NCR Teradata Database | UNIX et Windows. | OLAP. Java et CGI. | Authentification (LDAP) | Les solutions qui accèdent à Teradata sont a priori moins nombreuses que pour Essbase |
SAP SAP BW | Linux, UNIX et Windows | OLAP. BAPI (API SAP) et XML. | Authentification (LDAP). | Dédié à la plate-forme SAP. Il peut être attaqué par des applications tierces (via ODBC). |
SAS Intelligen ce Storage | OLAP. Java, UNIX et Windows JDBC et ODBC | Authentification (SAP et LDAP) | Associe des fonctions de structuration relationnelle et multidimensionnelle. Il peut être livré avec un ETL. |
Bases de données multidimensionnelles
BD relationnelle ou BD XML : que choisir ?
è sources de données qui peuvent nécessiter traduction XML ?
è Si vous avez plusieurs sources de données à utiliser pour des applications
XML è une BD XML native est intéressante
4 Les BD XML intègrent des API que vous pouvez utiliser pour intégrer les données XML avec les applications
è Exemple
4 vous échanger des données avec d'autres sociétés qui utilisent XML pour gérer vos processus de facturation et de paiement
§ Ces données peuvent être stockées dans une seule base de données
4 en même temps vous échanger des données XML avec d'autres sociétés pour gérer les commandes en ligne et les livraisons.
§ Ces applis peuvent utiliser une BD complètement différente, ou même des données stockées dans votre système de fichiers
è Une BD XML native, mise en place au centre du dispositif avec un serveur d'applications le plus souvent, vous permettrait de traiter tous les processus XML de commandes, de paiement, de facturation et de livraison sans le moindre impact sur vos BD, les performances de votre système de fichiers ou les performances de vos applications web.
Une pour toutes
è Les BD XML natives permettent d'accéder aux autres sources de données en utilisant les méthodes standardisées d'accès aux BD
4 JDBC, ODBC.
4 Pratiquement toutes les BD, de FileMaker, MySQL, et PostgreSQL à Oracle, DB2 et Sybase, sont accessibles en source ou en cible pour les traductions XML.
désavantages
è technologie récente qui n'a pas encore été largement testée.
è très chères, même si on trouve des BD XML natives à des prix moins prohibitifs (open-source)
è assez faciles à installer
4Des techniciens seront néanmoins nécessaires pour intégrer votre BD XML, vos sources de données et vos applications.
4Un développeur expérimenté peut terminer l'intégration rapidement, mais il lui faudra être familier avec les API et les liaisons.
4Un expert sera également requis pour configurer et administrer le tout de façon optimale.
Conseils
è Si votre société prévoit d'utiliser le XML à grande échelle ou à long terme, ces inconvénients ne sont pas si importants comparés aux avantages : performances améliorées, standardisation du XML et automatisation des processus commerciaux, services Web.
è Avant d'investir dans des technologies de BD XML natives, testez les capacités XML de vos BD existantes.
4 Il est probable que votre BD pourra traduire les données existantes en structures de documents XML.
4 Vous devrez alors mesurer le temps nécessaire à cette traduction.
è Si vous utilisez plusieurs sources de données (BD relationnelles fournies par différents développeurs, BD OO, données stockées dans systèmes de fichiers), vous devez vérifier si l'une des bases de données permet de traduire les données des autres en XML.
4 Il vaut mieux éviter d'avoir plusieurs bases de données qui traduisent en XML, car cela allonge les temps de traitement.
è La plupart des bases de données XML natives peuvent être téléchargées en version d'évaluation.
4 En essayer plusieurs avant de choisir celle qui semble la plus adaptée pour votre société
Bibliographie Normes
‘XML Schema Part 0: Primer’ W3C
‘XML Schema Part 1: Structures’ W3C
‘XML Schema Part 2: Datatypes’ W3C XML Schema Requirements ( Février 1999)
Introduction aux schémas Les schémas XML Gregory Chazalon, Joséphine Lemoine
W3C XML Schema, Eric Van Der Vlist, /pub/a/2000/11/29/schemas/