XML
eXtensibleMarkupLanguage
Anas ABOU EL KALAM
è Introduction au langage XML
èUn premier exemple
èRègle de syntaxe XML
èMise en œuvre d’une DTD
è Introduction au langage XML
èUn premier exemple
èRègle de syntaxe XML
èMise en œuvre d’une DTD
XML, pourquoi ?
è Limites HTML
4nombre limité de balises,
4HTML est figé
• Toutes les balises utilisables sont définies au départ ce qui est intenable si l'on voulait prendre globalement en compte les besoins d'un grand nombre de métiers .
4Pas de type de document (pas de structuration) prédéfinie permettant de définir abstraitement une structure de document
èest il est possible d'échanger des documents sans pour autant influer sur la forme de ceux-ci ?
4Cela permettrai ainsi de rendre simple l'adaptation d'un contenu à un navigateur ou bien à n'importe quel périphérique d'affichage
XML, pourquoi ?
è échanger, via le Web, des données stockées dans des bases de données, …
è W3C è Solution
4 Standard
4 Palliant problèmes de HTML
- Séparation structure // présentation
4 accepté et utilisé de tous
4 pouvoir permettre de transférer des données sur le Web, sans devoir refaire un protocole de communication, et sans forcément avoir de grosses modifications à apporter aux outils utilisés
SGML, HTML, XML, XHTML, ?
è SGML (Standard Generalized ML)est un langage normalisé de balises pour décrire structure et contenu de ? types de documents électroniques
è XML & HTML issus de SGML ==> balises, plateforme, mode … Mais
– XML décrit, structure, échange des données tandis que le Html ne fait qu'afficher des données
– XML est extensible (créer ses propre balises), HTML est figé
è XHTML est le successeur du Html . mais aussi un des "enfants" de XML
– pour faire un peu le ménage dans les dérives du Html, le W3C a conçu le XHTML qui n'est en fait qu'une reformulation du HTML 4.0 selon la syntaxe et les règles du XML
XML, c’est quoi ?
è Langage très général utilisant des Tags
è n'a pas pour but de replacer HTML, mais plutôt d'être complémentaire
4XML n'est pas un langage de présentation de document en tant que tel
è meta-langage : langage permettant de définir un nouveau langage (de nouvelles balises).
4on peut difficilement exploiter XML tel quel : il faut en spécifier un sous-ensemble sur lequel on pourra travailler.
4Pour exploiter un sous ensemble de tag XML, on peut utiliser une DTD et des feuilles de styles
è document XML est constitué de plusieurs fichiers et notamment,
4 un fichier de données,
4 un fichier de validation et
4 une feuille de styles
è Introduction au langage XML
èUn premier exemple
èRègle de syntaxe XML
èMise en œuvre d’une DTD
è Exemple,
4 plans de formation d’un grand centre de formation è Objectif,
4 présentation facile des plans de cours,
4 MAJ / Changement mise en page facile des plans de cours
4sans forcément devoir retoucher l'intégralité des plans de cours
Ø XML s'est donc imposé à nous,
Ø nous avons définit notre propre langage de présentation de plan de cours : appelons le FML (Formation Markup Language).
è <?xml version="1.0" encoding="ISO-8859-1"?>
– … ce qui suit est un document XML selon sa version 1.0.
– balise sans fermeture car cette balise n'est pas encore du XML – indique à l'interpréteur XML [Parser] le jeu de caractères à utiliser
• "ISO-8859-1" ==> accepter la plupart des lettres avec des accents.
• UTF-8 ou UTF-16 pour les anglo-saxons, etc.
è <racine> (FORMATION dans notre cas)
– L'élément racine est indispensable
– Vous pouvez utiliser n'importe quel nom à l'intérieur de cette balise
è suite du document XML …
– Votre document XML proprement dit, qui respectera bien entendu scrupuleusement la syntaxe du XML ("bien formé").
è </racine>
– Document XML se termine obligatoirement à la fermeture de la balise de racine.
è Une formation (tag <FORMATION>) est constituée d'un titre (tag TITRE), puis d'une durée (tag DUREE), et ainsi de suite.
4 tous les noms de tags sont en français.
4 C'est donc clair,
4 ce n'est pas du prédéfini.
§ C'est moi qui ai décidé d'appeler ainsi mes tags
Ø"formation.dtd"
Ø définir la grammaire (comment correctement utiliser les tags) Ø " formation.xsl".
Ø permettre une mise en page d'un fichier de données.
è Ex : HTML
4 un tag <TD> (Table Data) ne peut pas s'utiliser n'importe ou. Une cellule de données TD doit être contenue dans une ligne de tableau <TR> (Table Row) qui doit elle même être contenue dans un tag <TABLE>.
è DTD / Schéma : définir
4 structure d’un document XML,
4 relation entre éléments,
4 type données,
4 contraintes de contenu
Ø deux principaux mécanismes vous sont offerts
Ø définir une DTD (Document Type Definition).
Ø utiliser un schema (fichier XML de définition de grammaire)
Exemple XHTML avec DTD externe
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ""> <html xmlns=";>
Exemple XML avec DTD interne
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE amis [
<!ELEMENT amis (ami+)>
<!ELEMENT ami (email*,telephone?)>
<!ATTLIST ami nom CDATA #REQUIRED
prenom CDATA #IMPLIED>
<!ELEMENT email (#PCDATA)>
<!ELEMENT telephone (#PCDATA)> ]>
<amis>
<ami nom="Dupond">
<email></email>
…
</amis>
<!ELEMENT CONTENU (CHAPITRE)*>
<!ELEMENT TITRE (#PCDATA)> <!ELEMENT DUREE (#PCDATA)> <!ELEMENT PREREQUIS (#PCDATA)> <!ELEMENT OBJECTIF (#PCDATA)> <!ELEMENT SECTION (#PCDATA)> <!ELEMENT ANIMATEUR (#PCDATA)>
è (#PCDATA- Parsed Character Data)
4 ces tags ne peuvent que contenir des données textuelles
è <!ELEMENTFORMATION (TITRE, DUREE, PREREQUIS,
OBJECTIF, CONTENU, ANIMATEUR+)>
4 le tag racine (<FORMATION>) va contenir
§ un titre (et obligatoirement un),
§ puis une durée,
§ un pré-requis,
§ un objectif,
§ un contenu
§ et des animateurs (un ou plus)
è <!ELEMENTCONTENU(CHAPITRE)*>
4 le contenu est lui même composé. Il peut contenir un nombre quelconque de chapitre (0 ou plus)
è <!ELEMENTCHAPITRE(TITRE, SECTION*)>
4 Un chapitre étant constitué d'un titre et d'autant de sections que nécessaire
è 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.
è 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
Résultat si on ne spécifie pas le tag qui précise la feuille de style
èPréciser feuille de stype
4Ajouter :<?xml:stylesheettype="text/xsl"href="" ?>
è Ligne d’affectation feuille de stype
4 <?xml: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).
è 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
XSL (eXtensible Stylesheet Language)
Bcp de travail pour peu de résultats :-( … mais
è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".
è <?xml version="1.0"?>
– XSL est dérivé du XML ==> doc XSL commence par déclaration XML
è <xsl:stylesheet xmlns:xsl=";>
è le doc est du XSL extensible stylesheet
– L'attribut xmlns fait référence au namespace" utilis
– namespace du W3C: xmlns:xsl=" è <xsl:template match="/">
– 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
è <html> <body>
– Début partie Html qui servira de support pour l'affichage du document dans le navigateur
– Ensuite . diverses balises Html et XSL Par exemple :
è <xsl:value-of select="chemin d'accès/élément"/>
– <xsl:value-of> : 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é) è </body> </html> //Fin de la partie en Html.
è </xsl:template>
– fermeture de la balise de template.
è </xsl:stylesheet>
– Le document XSL se termine obligatoirement par la fermeture de la balise de déclaration de document XSL
<?xml version='1.0'?> <xsl:stylesheet xmlns:xsl=";> <xsl:template match="/"> <html> <body> <table border="1" cellspacing="0" cellpadding="3"> <tr bgcolor="#FFFF00"> <td>Titre</td> <td>Artiste</td> </tr> <tr> <td><xsl:value-of select="compilation/mp3/titre"/></td> <td><xsl:value-of select="compilation/mp3/artiste"/></td> </tr> </table> </body> </html> </xsl:template> </xsl:stylesheet> |
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href=""?> <compilation> <mp3> <titre>Foule sentimentale</titre> <artiste>Alain Souchon</artiste> </mp3> <mp3> <titre>Solaar pleure</titre> <artiste>MC Solaar</artiste> </mp3> <mp3> <titre>Chambre avec vue</titre> <artiste>Henri Salvador</artiste> </mp3> </compilation> |
|
è 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
4<xsl:for-each select="compilation/mp3" order-by="+artiste">
è 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']"
<xsl:for-each select="compilation/mp3[artiste='Alain Souchon']">
è <xsl:if match=".[balise='xxx']"> balises Html </xsl:if>
è effectuer un choix dans les données du fichier XML
è On ajoutera l'attribut match où l'on indique l'élément choisi
<xsl:for-each select="compilation/mp3">
<xsl:if match=".[artiste='Vanessa Paradis']">
<tr>
<td><xsl:value-of select="titre"/></td>
<td><xsl:value-of select="artiste"/></td>
</tr>
</xsl:if>
</xsl:for-each>
|
è 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
<body>
<script type="text/javascript">
// 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))
</script>
</body> </html>
è 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
è 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.
<?xml version="1.0"?>
<racine>
<cours nom="rsx102" site=";>
<article nom="XPath"></article>
</cours>
</racine>
/ 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.
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
è 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)
è Introduction au langage XML
èUn premier exemple
èRègle de syntaxe XML
èMise en œuvre d’une DTD
è un fichier XML utilise des tags pour structurer ses données.
4 Différentes règles existent pour régire l'utilisation des tags
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>
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)
è 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 < et se terminant par les caractères />
<DATE Jour="26" Mois="08" Année="1973"></DATE>
<DATE 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
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.
<DATE> <JOUR>26</JOUR> <MOIS>08</MOIS> <ANNEE>1973</ANNEE> </DATE> | OK |
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
<?xml version="1.0" ?>
<TAG-RACINE> <!-- Contenu du tag --> </TAG-RACINE> FAUX
<AUTRE-TAG-RACINE> <!-- Contenu du tag --> </AUTRE-TAG-RACINE>
è 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).
<DATE>26/08/1973</DATE> ou
<DATE>
<JOUR>26</JOUR>
<MOIS>08</MOIS>
<ANNEE>1973</ANNEE> </DATE>
è 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.
• <date anniversaire=071185> ==> incorrect • <date anniversaire="071185"> ==> correct
4 Le nom est séparé de la valeur par le signe d'égalité.
<TagName attribut1="valeur1" attribut2='valeur2'> Donnée du tag </TagName>
è 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
<DATE>
<JOUR>26</JOUR>
<MOIS>08</MOIS>
<ANNEE>1973</ANNEE>
</DATE>
est donc préférable à
<DATE>26/08/1973</DATE>
ou alors (pour feuille de style)
<DATE format="fr">26/08/1973</DATE>
Ø 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.
• <EXEMPLE xml:lang="fr">Aquarelle</EXEMPLE>
Ø <?xml version="1.0" ?>è 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.
<?xml version="1.0" ?> <PERSONNE> <NOM>Durand</NOM> <PRENOM>Gérard</PRENOM> </PERSONNE> |
è 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
Ø Feuille de style è Affichage dans navigateur
Ølangages CSS ou XSL
Ø Liaison è rajouter "<?xml:stylesheet" ….
4L'attribut type : spécifier langage utilisé ("text/css" ou "text/xsl")
4L'attribut href indique la localisation du fichier
Ø 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,
Ø 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 <DATE>,
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.
Ø 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.
<CONTENT> | ||
Quelques caractères Grecque : Σ Π Φ | ||
Ω | ||
</CONTENT> | ||
Quelques caractères Grecque : ? ? ? ? | ||
Ø Il est possible d'insérer n'importe quel caractère Unicode.
Ø "&#" valeur Unicode du caractère souhaité puis ";".
Ø 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 ?
< Less than <
> Greater than >
& | Ampersand | & |
" | Quote | " |
' | Apostrophe | ‘ |
è Introduction au langage XML
èUn premier exemple
èRègle de syntaxe XML
èMise en œuvre d’une DTD
Ø 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
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).
Ø Si vous embarquez votre DTD dans un fichier de données, elle sera alors localisée dans le prologue, au niveau du tag <!
DOCTYPE >.
Ø Pour lier un fichier de données à une DTD, il vous faut aussi utiliser le tag <!DOCTYPE >
Ø 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.
<?xml version="1.0" encoding="ISO-8859-1" ?> |
<!DOCTYPEexempleSYSTEM"" []> |
<exemple> |
<!-- Suite du document XML --> |
</exemple> |
Ø 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
Ø 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é <!ELEMENT agenda (personne*) > de personnes <!ELEMENT personne (nom, prenom?, date)> Une personne doit posséder un nom puis un prénom (facultatif) puis une date de naissance Architecture web – Partie II<!ELEMENT hr (EMPTY) > En HTML, le tag HR (Horizotal Rule) est définie Page 67 |
? | 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
Ø <!ELEMENT LIGNE (CELL-E* | CELL-D*) >
Ø soit contenir nbre qlq de cellules de données soit nbre qlq de cellules d'entête
Ø <!ELEMENT LIGNE (CELL-E | CELL-D)* >
Ø 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>Titre du tableau</TITRE> | ||
<LIGNE> | ||
<CELL-E>\</CELL-E> | ||
<CELL-E>Statistique 1</CELL-E> | ||
<CELL-E>Statistique 2</CELL-E> | ||
</LIGNE> | ||
<LIGNE> | ||
… | ||
</LIGNE> | ||
</TABLEAU> | ||
Ø un tableau peut contenir un nombre quelconque de ligne, mais au plus un seul titre (ce dernier étant facultatif).
TABLEAU> | ||
<TITRE>Titre du tableau</TITRE> | ||
<LIGNE> | ||
<CELL-E>\</CELL-E> | ||
<CELL-E>Statistique 1</CELL-E> | ||
<CELL-E>Statistique 2</CELL-E> | ||
</LIGNE> | ||
<LIGNE> | ||
… | ||
</LIGNE> | ||
</TABLEAU> | ||
Ø ATTLIST è introduire une liste d'attributs,
Ø ATTLIST, suivi du nom du tag et des donnéesdescriptives de chaque attribut.
Ø 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.
<!ELEMENT DATE (#PCDATA) > |
<!ATTLIST DATE format (en | fr) #REQUIRED > |
<!-- La donnée est manipulable, car on qualifie son format -->
<DATE format="fr">26/08/1973</DATE>
Ø #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
<!-- Comme le tag PRE en HTML --> |
<!ATTLIST PRE xml:space (default | preserve) #FIXED "preserve" > |
Ø #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 <IMG> 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).
<!ATTLIST MON-IMAGE |
alt CDATA #IMPLIED |
>
• 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
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs=";>
<xs:element name="personne">
<xs:complexType>
<xs:sequence>
<xs:element name="nom" type="xs:string" />
<xs:element name="prenom" type="xs:string" />
<xs:element name="date_naissance" type="xs:date" />
<xs:element name="etablissement" type="xs:string" />
<xs:element name="num_tel" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
• 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
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
Un schéma XML est un document XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd=";>
<!-- Déclaration de deux types d ’éléments -->
<xsd:element name="nom" type="xsd:string" />
<xsd:element name= "prenom" type="xsd:string" />
</xsd:schema>
<?xml version="1.0"?>
<Addresse_postale_France pays="France">
<nom>Mr Jean Dupont</nom>
<rue>rue Camille Desmoulins</rue>
<ville>Paris</ville>
<departement>Seine</departement>
<code_postal>75600</code_postal>
</Addresse_postale_france >
<!DOCTYPE une_DTD_adresse [ <!ELEMENT Addresse_postale_france (nom, rue, ville, département, code_postal)> <!ELEMENT nom (#PCDATA)> <!ELEMENT rue (#PCDATA)> <!ELEMENT ville (#PCDATA)> <!ELEMENT département (#PCDATA)> <!ELEMENT code_postal (#PCDATA)> <!ATTLIST Addresse_postale_france pays NMTOKEN #FIXED ‘France’ > ]> |
<xsd:schema xmlns:xsd=";>
<xsd:complexType name="Addresse_postale_france" >
<xsd:sequence>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="rue" type="xsd:string" />
<xsd:element name="ville" type="xsd:string" />
<xsd:element name="departement" type="xsd:string" />
<xsd:element name="code_postal" type="xsd:decimal" />
</xsd:sequence>
<xsd:attribute name= "pays" type="xsd:NMTOKEN" use="fixed" value="FR"/>
</xsd:complexType>
</xsd:schema>
• 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).
•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
<xsd:element name="code_postal" type="xsd:decimal"/>
• 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
<xsd:complexType name="TypeRapport">
<xsd:attribute name= "Date_creation" type="xsd:date"/>
…
</xsd:complexType>
<xsd:element name="Rapport" type="TypeRapport"/>
• 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: <xsd:attribute name= "Date_peremption" type="xsd:date" use="default" value= "2005-12-31"/>
• 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 :
– <xsd:attribute name= "Date_creation" type="xsd:date" use="required"/>
•‘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
– <xsd:element name="code_postal " type="xsd:integer"/>
– Types simples définis par dérivation d'un autre type simple, au moyen de l’élément <xsd:simpleType >
– Exemple de type simple : dérivation par restriction
<xsd:simpleType name= "DeuxDecimales">
<xsd:restriction base="xsd:decimal">
<xsd:fractionDigits value="2" />
</xsd:restriction>
</xsd:simpleType>
Déclarés au moyen de l'élément <xsd:complexType name=" Ils peuvent contenir d’autres éléments, des attributs. Exemple
<xsd:complexType name= "TypePrix">
<xsd:simpleContent>
<xsd:extension base="DeuxDecimales">
<xsd:attribute name="Unite" type= "FrancEuro" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
Trois façons de composer des éléments dans un type complexe :
sequence, choice, all.
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.
<xsd:complexType name= "Commande">
<xsd:sequence>
<xsd:element name= "Ad_livraison" type="Addresse"/>
<xsd:element name= "Ad_facturation" type="Addresse"/>
<xsd:element name= "texte" type="xsd:string" minOccurs="1" />
<xsd:element name="items" type="Items" maxOccurs= "30" />
</xsd:sequence>
</xsd:complexType>
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.
<xsd:complexType name= "type_temps">
<xsd:choice >
<xsd:element name= "Noire" type="Note" minOccurs="1" maxOccurs="1" />
<xsd:element name= "Croche" type="Note" minOccurs="2" maxOccurs="2" />
</xsd:choice>
</xsd:complexType>
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.
<xsd:complexType name= "Commande">
<xsd:all>
<xsd:element name= "Ad_livraison" type="Addresse"/>
<xsd:element name= "Ad_facturation" type="Addresse"/>
<xsd:element name= "texte" type="xsd:string" minOccurs="0" />
<xsd:element name="items" type="Items" maxOccurs= "30" /> </xsd:all>
</xsd:complexType>
Structure
Les types de données XML schéma
• 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).
• 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.
•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.
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
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 :
<xsd:simpleType name= "ChiffresOctaux"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="0" /> <xsd:maxInclusive value= 7" /> </xsd:restriction> </xsd:simpleType> |
• 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.
<xsd:simpleType name= "Mois">
<xsd:restriction base="xsd:string">
<xsd:enumeration value= "Janvier"/>
<xsd:enumeration value="Février"/>
<xsd:enumeration value="Mars"/>
<!-- -->
</xsd:restriction>
</xsd:simpleType>
• 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
<xsd:complexType name= "mesure">
<xsd:simpleContent><xsd:extension base="xsd:Decimal">
<xsd:attribute name="unite" type="xsd:NMTOKEN"/>
</xsd:extension></xsd:simpleContent>
</xsd:complexType>
<xsd:element name= "temperature" type= "mesure"/>
<temperature unit="Kelvin">230</temperature>
Pour créer un nouveau type on effectue l’union ensembliste de toutes les valeurs possibles de différents types existants. Exemple:
<xsd:simpleType name="TransportFormatCaracteres">
<xsd:union memberTypes="base64Binary hexBinary"/>
</xsd:simpleType>
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
<simpleType name= ’DebitsPossibles'>
<list itemType=’nonNegativeInteger'/> </simpleType>
<debitsmodemV90 xsd:type=’DebitsPossibles’>
33600 56000
</debitsmodemV90>
Autres aspects XML :
Ø 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)
<?xml version="1.0" encoding="ISO-8859-1" ?> |
<!DOCTYPE test [ |
titre |
<!ENTITY "Introduction au langage XML" > |
<!-- . . . --> |
]> |
<test> |
&titre; |
</test>
Ø 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.
<?xml version="1.0" encoding="ISO-8859-1" ? | |
> | |
<chapitre> | |
<titre>le titre du chapitre 1</titre> | |
<section>sqgkfjsmqdlks fqjlf</section> | |
<section>sqgkfjsmqdlks fqjlf</section> | |
</chapitre> | |
<?xml version="1.0" ?> | |||
<!DOCTYPE bouquin [ | |||
<!ENTITY chapitre-1SYSTEM""> | |||
<!ENTITY chapitre-2SYSTEM""> | |||
<!ENTITY auteur "Dominique LIARD"> | |||
]> | |||
<bouquin> | |||
<titre>XML blabla</titre> | |||
<auteur>&auteur;</auteur> | |||
&chapitre-1; | |||
&chapitre-2; | |||
</bouquin> | |||
Définition d'entités externes
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.
• 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 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.
è 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.
è 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.
è 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.
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. |
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
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.
è 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.
è 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.
è 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é
‘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/