XML Le nouveau standard de données sur le WEB
Agenda Introduction Définition de XML Le Document Object Model Afficher le XML Rechercher dans le XML Intégration Applicative Conclusion
L’important en 3 Lettres... COM WNT MTS DNA DNS MSMQ HTML DHTML WEB ADO GDI SQL ASP IIS
Technologies en 3 Niveaux
Les problèmes résolus Indépendance du client Application windows ou browser Application windows ou browser Réutilisation du code binaire Composants COM Composants COM Accès universel aux données ODBC/OLE-DB ODBC/OLE-DB Indépendance du protocole réseau DCOM DCOM Services middleware MTS / MSMQ / IIS MTS / MSMQ / IIS Intégration avec l’existant COMTI / FalconMQ COMTI / FalconMQ
Les problèmes tenaces: sur le poste client Limitations des fonctionnalités au ppcd des browsers Pas ou peu de support de COM sur les plateformes autres que Windows Développement client souvent différent du développement serveur
Les problèmes tenaces: sur le Middleware (Windows) Accès indifférencié DCOM / HTTP... DCOM / HTTP... Comment structurer les données? Comment structurer les données? Serveur Internet Serveur de pages (souvent statiques) Serveur de pages (souvent statiques) Peu de pages dynamiques Peu de pages dynamiques Réutilisation du code Réutilisation du code Développement serveur souvent différent du développement client Montée en charge
Les problèmes tenaces: sur le serveur Aucun problème logiciel seul! Accès aux données: Accès aux données: Toutes plateformes / Tout support Toutes plateformes / Tout support Intégration aux Middleware Existants Intégration aux Middleware Existants CICS / MQSeries / BEA Tuxedo CICS / MQSeries / BEA Tuxedo Problématiques de Haute disponibilité Montée en charge
Et toujours les données... L’accès aux données n’est plus un problème Le transfert de ces données et leur signification en est un! Avez-vous déjà fait une recherche sur le WEB? Avez-vous déjà fait une recherche sur le WEB? Construisez-vous le tranfert de données de la même manière pour le WEB et pour le réseau d’entreprise? Construisez-vous le tranfert de données de la même manière pour le WEB et pour le réseau d’entreprise? La solution : XML
Agenda Introduction Définition de XML Le Document Object Model Afficher le XML Rechercher dans le XML Intégration Applicative Conclusion
Qu’est ce que XML? eXtensible Markup Language Un format texte basé sur des tags pour: Les balises de Document Les balises de Document Les données Les données Standard Rigoureux, simple à parcourir (par rapport à HTML) Correctement formé versus valide Correctement formé versus valide
XML: Le format universel de données sur le WEB Un enregistrement de données Commande, transaction Commande, transaction Données sur un site WEB Quelles pages downloader, quand… Quelles pages downloader, quand… Jean Jean <Amount>100</Amount><Items><Item><Qty>6</Qty><Prod>E13</Prod></Item><Item><Qty>9</Qty><Prod>J14</Prod></Item></Items></Order>
Qu’est ce que XML? Définit la sémantique des données, non la sémantique d’affichage HTML définit l’affichage, pas les données 11 Novembre 1998 11 Novembre 1998 HTML définit un texte, mais pas ce qu’il représente HTML définit un texte, mais pas ce qu’il représente 11 Novembre 1998 11 Novembre 1998 XML définit une date, mais pas comment elle doit être affiché XML définit une date, mais pas comment elle doit être affiché
Status XML au W3C Recommendation XML 1.0 XML 1.0 XML Document Object Model (DOM) XML Document Object Model (DOM) MathML MathML SMIL SMIL Working Drafts Namespaces Namespaces Extensible Style Language (XSL) Extensible Style Language (XSL) Extensible Link Language (XLL) Extensible Link Language (XLL) Resource Description Framework (RDF) Resource Description Framework (RDF) Submission Document Content Description (DCD) Document Content Description (DCD) XML-Data XML-Data Vector Markup Language (VML) Vector Markup Language (VML) Precision Graphics Markup Language (PGML) Precision Graphics Markup Language (PGML)
Support de XML dans IE5 Beaucoup d’améliorations Confirmité XML 1.0 Confirmité XML 1.0 Support des Namespace Support des Namespace Conformité DOM Conformité DOM DSO Amélioré DSO Amélioré Data Islands Data Islands XSL, incluant des requêtes complexes XSL, incluant des requêtes complexes Vue XML native - utilisant XSL ou CSS Vue XML native - utilisant XSL ou CSS XML Schemas technology preview XML Schemas technology preview Fonctionne sur le serveur également Fonctionne sur le serveur également
Agenda Introduction Définition de XML Le Document Object Model Afficher le XML Rechercher dans le XML Intégration Applicative Conclusion
... } Attributs Document Eléments Text Text Text{ Modèle de données XML XML est une structure arborescente Les noeuds de l’arbre contiennent les données Les noeuds de l’arbre contiennent les données
Modèle de données XML Les types de noeuds Document Element Attribute Processing Instruction Commande spécifique d’application Commande spécifique d’application Comment Text Information texte Information texte Section CDATA Entity Reference & &address; & &address; Entity DocumentFragment DocumentType
Naviguer dans le XML Jane Doe … Jane Doe …</root>
Naviguer dans le XML name lastfirst JaneDoe orders orderorder date 07/16/98 date 07/23/98 Comment customer list root id customer 345 id customer 120 Namespace prefix=“x”
XML DOM Document Un document peut être créé de 2 façons: Utiliser les XML Data Islands Utiliser les XML Data Islands Référence du XML en utilisant une URL ou inclure du XML directement Référence du XML en utilisant une URL ou inclure du XML directement Méthode recommandée pour l’interopérabilité Méthode recommandée pour l’interopérabilité Créer l’objet XML directement Créer l’objet XML directement Méthodes spécifiques au language Méthodes spécifiques au language
XML DOM Créer un document - Data Island … sebastmi … … … sebastmi … … </HTML>
XML DOM Créer un document - lang. spécifique JScript var doc = Island1; var doc = new ActiveXObject(“Microsoft.XMLDOM”); Visual Basic ® Scripting Edition dim doc set doc = CreateObject(“Microsoft.XMLDOM”) Visual Basic ® dim doc as new DOMDocument C++ IXMLDocument *pIXDDoc = CoCreateInstance(…)
XML DOM Document L’objet Document hérite de l’objet Node Base Node doctype Node documentElement string url boolean validateOnParse Charger un document booleanload(URL) stringloadXML(xmlString) ParseErrorparseError
XML DOM Document Construction Node createNode(type,name,namespace) Création d’un noeud de type spécifique Création d’un noeud de type spécifique Node createElement(tagName) Node createAttribute(name) Node createTextNode(data) Node createProcessingInstruction(target,data) Node createComment(data) Node createCDATASection(data) Node createEntityReference(name) Node createDocumentFragment()
XML DOM Document – Support de l’asynchrone Propriétés intreadystate booleanasync Méthodes voidabort() Evènements voidonreadystatechange() void ondataavailable()
XML DOM Document Comment root ProcessingInstruction Document DocumentType Comment ProcessingInstruction Many { Only 1 { document.doctype document.documentElement
XML DOM Propriétés de l’objet Node Propriétés de base stringnodeName stringnodeValue intnodeType stringnodeStringType NodeownerDocument Nodedefinition booleanspecified booleanparsed stringtext stringxml
XML DOM Propriétés de l’objet Node Propriétés de navigation NodeparentNode boolean hasChildNodes NodeListchildNodes NamedNodeMapattributes NodefirstChild NodelastChild NodepreviousSibling NodenextSibling
XML DOM Anatomie d’un élément Node nodeType = Element nodeName = customer nodeValue = null hasChildNodes = true nextSiblingpreviousSibling parentNode NodeList NamedNodeMap childNodes firstChild lastChild attributes
XML DOM Méthodes Node Méthodes Enfants NodeinsertBefore(newChild,refChild) NodereplaceChild(newChild,oldChild) NoderemoveChild(oldChild) NodeappendChild(child) Avancées DocumentcloneNode(deep)
XML DOM NodeList NodeList est une collection de Nodes Base longlength Nodeitem(index) Navigation NodenextNode() voidreset() Support du for…next Visual Basic
Utiliser le DOM foo def baz 456 foo abc bar root 123 mydocument 345 root root = mydocument.documentElement;
345 Utiliser le DOM foo def baz 456 foo abc bar root 123 node mydocument root = mydocument.documentElement; node = root.childNodes.item(1); root
8910 Utiliser le DOM foo def baz 456 foo abc bar root 123 node update mydocument root = mydocument.documentElement; node = root.childNodes.item(1); node.childNodes.item(0).nodeValue = “8910”; root
8910 Utiliser le DOM foo def baz 456 foo abc bar root 123 node update mydocument attr root = mydocument.documentElement; node = root.childNodes.item(1); node.childNodes.item(0).nodeValue = “8910”; attr = node.attributes.getNamedItem(“foo”); root
newNode 8910 root = mydocument.documentElement; node = root.childNodes.item(1); node.childNodes.item(0).nodeValue = “8910”; attr = node.attributes.getNamedItem(“foo”); root.insertBefore(newNode,root.firstChild); Utiliser le DOM foo def baz 456 foo abc bar root 123 node update mydocument attr root
newNode Utiliser le DOM 456 foo abc bar root 123 mydocument root root = mydocument.documentElement; node = root.childNodes.item(1); node.childNodes.item(0).nodeValue = “8910”; attr = node.attributes.getNamedItem(“foo”); root.insertBefore(newNode,root.firstChild);root.removeNode(root.lastChild);
XML DOM Namespaces Implémente les Namespaces dans XML suivant le working draft Un méchanisme pour mélanger des attributs avec le même nom mais des significations différentes Supports des « scoped namespaces » Supporte la définition des namespaces par défaut Support complet dans le DOM
XML DOM Namespaces - DOM Propriétés stringnamespace stringbaseName stringprefix stringnodeName
XML DOM Exemple de Namespaces <x:customer id=“345” xmlns:x=“ xmlns:x=“ …</x:customer> Utiliser les propriétés du modèle objet custnode.namespace == “ custnode.prefix == “x” custnode.baseName == “customer” custnode.nodeName == “x:customer” Comparer deux éléments if (node1.baseName == node2.baseName && node1.namespace == node2.namespace) node1.namespace == node2.namespace) // nodes are same element type
XML DOM Types de données Permet un ensemble élargit de type de données en plus des chaines de caractères L’OM vérifie que la donnée est du type déclaré L’OM fournit un support spécifique NodenodeTypedValue stringdataType
XML DOM Types de données string int float boolean dateTime date time i1, i2, i4 ui1, ui2, ui4 r4 r8 uuid uri bin.hex bin.base64
XML DOM Exemple de types de données node.nodeValue = “12” node.nodeTypedValue = 12 node.dataType = “int” </root>
XML DOM NamedNodeMap Fournit un accès aux attributs Base longlength Nodeitem(index) NodegetNamedItem(name) voidsetNamedItem(node) NoderemoveNamedItem(name)
XML DOM NamedNodeMap Support des namespaces Node getQualifiedItem(base,URI) Node removeQualifiedItem(base,URI) Navigation NodenextNode() voidreset() Support du for…next Visual Basic
XML-Data Schemas Une manière de décrire une structure, un contenu, et des types de données XML Etend la fonctionnalité du DTD Utilise la grammaire XML Peut être utilisé pour valider le XML
XML-Data Schemas Schema </elementType> DTD <!DOCTYPE bar [ ]>
Agenda Introduction Définition de XML Le Document Object Model Afficher le XML Rechercher dans le XML Intégration Applicative Conclusion
Afficher le XML HTML est le language d’affichage du browser Deux méthodes pour afficher le XML: XSL: eXtended Stylesheet Language XSL: eXtended Stylesheet Language CSS: Cascading StyleSheet CSS: Cascading StyleSheet Liaison aux données Data Soutce Object (DSO) Data Soutce Object (DSO)
Utiliser XSL pour générer du HTML Qu’est ce que XSL? Une grammaire XML Un processeur de modèle Transforme une grammaire XML en une autre (ou du HTML) Transforme une grammaire XML en une autre (ou du HTML) Déclaratif, pas de code requis Déclaratif, pas de code requis Une méthode intégrée au DOM XML transformNode(stylesheet)
Utiliser XSL pour générer du HTML Comment l’utiliser? La feuille de style est chargée par le parser XML La méthode transformNode() est utilisée pour obtenir le texte de la grammaire cible La représentation texte peut être: Du HTML à envoyer au client Du HTML à envoyer au client Une autre grammaire XML pouvant être parsée Une autre grammaire XML pouvant être parsée
Utiliser XSL pour générer du HTML Comment l’utiliser? XSL Stylesheet parse XML A BC ED A.transformNode(1) <new>…</new> parse new B E Response.Write
Utiliser les CSS Standard du W3C Technologie cliente Transformations possible via les CSS Behaviors (IE5)
XML Data Source Object Fonctionne en conjonction avec la liaison aux données dans Internet Explorer Permet l’utilisation de données XML sans code Contruit dans l’ensemble des versions de IE5 Haute performance. Compatible avec l’implémentation dans IE4 Fournir un accès ADO à XML
Agenda Introduction Définition de XML Le Document Object Model Afficher le XML Rechercher dans le XML Intégration Applicative Conclusion
XML DOM Méthodes Support des requêtes NodeListselectNodes() NodeselectSingleNode() Integration au XSL wstringtransformNode()
XSL Pattern Order by Booléen : AND, OR, NOT author[(degree $or$ award) $and$ publication] author[(degree $or$ award) $and$ publication] Equivalence: $eq$, $ne$ Trouver tous les auteurs dont le Last-name est Bob : Trouver tous les auteurs dont le Last-name est Bob : author[last-name = "Bob"] author[last-name $eq$ "Bob"] Trouver tous les auteurs dont l’attribut from est différent de Harvard : Trouver tous les auteurs dont l’attribut from est différent de Harvard : != "Harvard"] $ne$ "Harvard"]
XSL Pattern Comparaison: $any$, $all$ Trouver tous les auteurs dont l’un des last name est bob : Trouver tous les auteurs dont l’un des last name est bob : author[last-name = “Bob”] author[$any$ last-name = “Bob”] Collection Trouver tous les attributs de l’élément courant dont la valeur est « novel » : Trouver tous les attributs de l’élément courant dont la valeur est « novel » = "novel"] ...
Agenda Introduction Définition de XML Le Document Object Model Afficher le XML Rechercher dans le XML Intégration Applicative Conclusion
Intégration Applicative MSXML est un objet COM Utilisable dans tous les languages Visual Basic Visual Basic Visual C++ Visual C++ Delphi Delphi PowerBuiler PowerBuiler......
Intégration Applicative Sur le poste client: Affichage des données Affichage des données DSO / DOM DSO / DOM Sur le middleware Composants métiers Composants métiers DOM DOM
Conclusion Installez Internet Explorer 5 Utilisez XML sur le client et sur le serveur Construisez des applications qui utilisent le DOM pour accéder à vos données XML Utilisez le DSO pour construire des applications clientes utilisant XML
Ressources Microsoft Web site W3C DOM Committee Web site