Télécharger la présentation
Publié parBarthomieu Ferreira Modifié depuis plus de 9 années
1
Conception et Manipulations des Documents
1. Introduction 2. DTD 3. Schéma 4. Outils
2
1. Introduction Un document XML peut être associé à :
une DTD ou un schéma pour décrire les balises Une feuille de style pour présenter les données DTD ou/et schéma permettent de définir son propre langage basé sur XML Vocabulaire (balises) Grammaire (imbrications) Dialecte ou Jargon Introduction
3
Validité des documents
Document bien formé (Well Formed Document) balises correctement imbriquées analysable (parsable) et manipulable pas nécessairement valide par rapport au jargon Document valide (Valid Document) bien formé + conforme à la DTD ou au schéma Introduction
4
2. DTD Permet de définir le «vocabulaire» et la structure qui seront utilisés dans le document XML Grammaire du langage dont les phrases sont des documents XML (instances) Peut être mise dans un fichier (DTD externe) et être appelée dans le document XML DTD
5
Déclaration d'élément simple
<! ELEMENT balise (définition) > Le paramètre définition représente soit un type de donnée prédéfini, soit un élément de données composé, constitué lui même d'éléments Types prédéfinis ANY : L'élément peut contenir tout type de donnée EMPTY : L'élément ne contient pas de données spécifiques #PCDATA : L'élément doit contenir une chaîne de caractère Exemple <! ELEMENT Nom (#PCDATA)> <Nom>Victor Hugo</Nom> DTD
6
Déclaration d'élément composé
Définit une séquence ou un choix d'éléments Syntaxe spécifique avec opérateurs de composition d'éléments : <! ELEMENT balise (composition) > DTD
7
Exemple d'élément composé
<!ELEMENT personne (nom, prenom+, tel?, adresse) > <!ELEMENT nom (#PCDATA) > <!ELEMENT prenom (#PCDATA) > <!ELEMENT tel(#PCDATA) > <!ELEMENT (#PCDATA) > <!ELEMENT adresse (ANY) > <personne> <nom>Hugo</nom> <prenom>Victor</prenom> <prenom>Charles</prenom> <tel> </tel> <adresse><rue></rue><ville>Paris</ville></adresse> </personne> DTD
8
Déclaration d'attributs
<! ATTLIST balise Attribut Type Mode > balise spécifie l'élément auquel est attaché l'attribut Attribut est le nom de l'attribut déclaré Type définit le type de donnée de l'attribut choisi parmi: CDATA Chaînes de caractères entre guillemets ("aa") non analysées Enumération Liste de valeurs séparées par | <! ATTLIST balise Attribut (Valeur1 | Valeur2 | ... ) > ID et IDREF Clé et référence à clé Mode précise le caractère obligatoire ou non de l'attribut #REQUIRED, #IMPLIED ou #FIXED DTD
9
Exemple d'attributs <! ATTLIST personne num ID, age CDATA,
genre (Masculin | Feminin ) > <!ELEMENT auteur (#PCDATA) > <!ELEMENT editeur (#PCDATA) > <!ATTLIST auteur genre (Masculin | Feminin ) #REQUIRED ville CDATA #IMPLIED> <!ATTLIST editeur ville CDATA #FIXED "Paris"> DTD
10
Exemple de DTD <!ELEMENT doc (livre* | article+) >
<!ELEMENT livre (titre, auteur+) > <!ELEMENT article (titre, auteur*) > <!ELEMENT titre(#PCDATA) > <!ELEMENT auteur(nom, adresse) > <!ATTLIST auteur id ID #REQUIRED > <!ELEMENT nom(prenom?, nomfamille) > <!ELEMENT prenom (#PCDATA) > <!ELEMENT nomfamille (#PCDATA) > <!ELEMENT adresse (ANY) > DTD
11
Exemple de DTD interne DTD
<?XML version="1.0" standalone="yes"?> <!DOCTYPE CATALOGUE [ <!ELEMENT CATALOGUE (VINS+)> <!ELEMENT VINS (SPECIFICATION+, ANNEE, PRIX)> <!ATTLIST VINS NOM CDATA #REQUIRED> <!ELEMENT SPECIFICATION EMPTY> <!ATTLIST SPECIFICATION PROVENANCE CDATA #REQUIRED COULEUR CDATA #REQUIRED> <!ELEMENT ANNEE (#PCDATA)> <!ELEMENT PRIX (#PCDATA)> ]> <CATALOGUE> <VINS NOM="Saint-Emilion"> <SPECIFICATION PROVENANCE="Bordeaux" COULEUR="Rouge"/> <ANNEE>1999</ANNEE> <PRIX>25 €</PRIX> </VINS>……... </CATALOGUE> DTD
12
Exemple de ID et IDREF <?xml version="1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [ <!ELEMENT DOCUMENT(PERSONNE*)> <!ELEMENT PERSONNE (#PCDATA)> <!ATTLIST PERSONNE PNUM ID #REQUIRED> <!ATTLIST PERSONNE MERE IDREF #IMPLIED> <!ATTLIST PERSONNE PERE IDREF #IMPLIED> ]> <DOCUMENT> <PERSONNE PNUM = "P1">Marie</PERSONNE> <PERSONNE PNUM = "P2">Jean</PERSONNE> <PERSONNE PNUM = "P3" MERE="P1" PERE="P2">Pierre</PERSONNE> <PERSONNE PNUM = "P4" MERE="P1" PERE="P2">Julie</PERSONNE> </DOCUMENT> DTD
13
DTD externe Modèle pour plusieurs documents
partage des balises, attributs et structures Définition locale ou externe <!DOCTYPE doc SYSTEM "doc.dtd"> <!DOCTYPE doc PUBLIC " Exemple de document <?xml version="1.0" standalone="no"?> <!DOCTYPE VINS SYSTEM "vins.dtd"> ... DTD
14
DTD : Entité paramètre Permet la définition d'un groupe d'éléments sous un nom (macro) <!ENTITY %nom "definition"> Réutilisable dans une DTD par simple appel : %nom; Exemple : <!ENTITY %genres "(homme | femme)"> <!ATTLIST auteur genre %genres; #REQUIRED> Peuvent être externes : <!ENTITY %mpeg PUBLIC " DTD
15
Quelques règles d'écriture
Modularité définir dans des entités séparées les parties réutilisables Précédence Regrouper les déclarations d'entités en tête Abstraction Utiliser des entités pour les modèles de contenus Spécificité Éviter les DTD trop générales Simplicité Découper les DTD trop complexes DTD
16
Insuffisance des DTD Questions ? Pas de types de données Pas en XML
difficile à interpréter par le récepteur difficile à traduire en schéma objets Pas en XML langage spécifique Propositions de compléments XML-data de Microsoft (BizTalk) XML-schema du W3C Questions ? DTD
17
3. XML Schéma Un schéma d'un document définit:
les éléments possibles dans le document les attributs associés à ces éléments la structure du document les types de données Le schéma est spécifié en XML pas de nouveau langage balisage de déclaration espace de nom spécifique xsd: ou xs: Présente de nombreux avantages structures de données avec types de données extensibilité par héritage et ouverture analysable à partir d'un parseur XML standard Schema
18
Objectifs des schémas Reprendre les acquis des DTD
Plus riche et complet que les DTD Permettre de typer les données Eléments simples et complexes Attributs simples Permettre de définir des contraintes Existence, obligatoire, optionnel Domaines, cardinalités, références Patterns, ... S'intégrer à la galaxie XML Espace de noms Infoset (structure d'arbre logique) Schema
19
Le modèle des schémas Déclaration des éléments et attributs
Nom Typage similaire à l'objet Spécification de types simples Grande variété de types Génération de types complexes Séquence (Sequence) Choix (Choice) Tas (All) Schema
20
Les types simples (1) string normalizedString token byte unsignedByte
Confirm this is electric normalizedString token byte -1, 126 unsignedByte 0, 126 base64Binary GpM7 hexBinary 0FB7 integer , -1, 0, 1, positiveInteger 1, negativeInteger , -1 nonNegativeInteger 0, 1, nonPositiveInteger , -1, 0 int -1, unsignedInt 0, Schema
21
Les types simples (2) long unsignedLong short unsignedShort decimal
-1, unsignedLong 0, short -1, 12678 unsignedShort 0, 12678 decimal -1.23, 0, 123.4, float -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN double boolean true, false 1, 0 time 13:20:00.000, 13:20: :00 dateTime T13:20: :00 duration P1Y2M3DT10H30M12.3S date gMonth --05-- gYear 1999 Schema
22
Les types simples (3) language ID IDREF IDREFS ENTITY ENTITIES
gYearMonth gDay ---31 gMonthDay Name shipTo QName po:USAddress NCName USAddress anyURI language en-GB, en-US, fr ID "A212" IDREF "A212" IDREFS "A212" "B213" ENTITY ENTITIES NOTATION NMTOKEN, NMTOKENS US Brésil Canada Mexique Schema
23
Commandes de base xsd: element : association d'un type à une balise
attributs name, type, ref, minOccurs, maxOccurs, ... attribute : association d'un type à un attribut attributs name, type type simple : les multiples types de base entier, réel, string, time, date, ID, IDREF, …, extensibles par des contraintes type complexe : une composition de types définit une agrégation d'éléments typés Schema
24
Les types complexes Définition d'objets complexes Exemple
<sequence> : collection ordonnée d'éléments typés <all> : collection non ordonnée d'éléments typés <choice>: choix entre éléments typés Exemple <xsd:complexType name="AddresseFR"> <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="codep" type="xsd:decimal"/> </xsd:sequence> <xsd:attribute name="pays" type="xsd:NMTOKEN" fixed="FR"/> </xsd:complexType> Schema
25
Héritage de types Définition de sous-types par héritage
Par extension : ajout d'informations Par restriction : ajout de contraintes Possibilité de contraindre la dérivation Exemple : <complexType name="AdressePays"> <complexContent> <extension base="Adresse"> <sequence> <element name="pays" type="string"/> </sequence> </extension> </complexContent> </complexType> Schema
26
Les patterns Contraintes sur type simple prédéfini
Utilisation d'expression régulières Similaires à celles de Perl Exemple <xsd:simpleType name="NumItem"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[A-Z]{2}"/> </xsd:restriction> </xsd:simpleType> Schema
27
XML Schema : exemple (1) <xsd:schema xmlns:xsd=" <xsd:element name="commande" type="CommandeType"/> <xsd:element name="commentaire" type="xsd:string"/> <xsd:complexType name="CommandeType"> <xsd:sequence> <xsd:element name="livrer" type="Adresse"/> <xsd:element name="facturer" type="Adresse"/> <xsd:element ref="commentaire" minOccurs="0"/> <xsd:element name="produits" type="ProduitType"/> </xsd:sequence> <xsd:attribute name="date_com" type="xsd:date"/> </xsd:complexType> Schema
28
XML Schema : exemple (2) Schema <xsd:complexType>
<xsd:complexType name="ProduitType"> <xsd:sequence> <xsd:element name="produit" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:element name="nom_prod" type="xsd:string"/> <xsd:element name="quantite"> <xsd:simpleType> <xsd:restriction base="xsd:positiveInteger"> <xsd:maxExclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="prix" type="xsd:decimal"/> <xsd:element ref="commentaire" minOccurs="0"/> <xsd:element name="date_livraison" type="xsd:date" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="num_prod" type="xsd:positiveInteger" use="required"/> </xsd:complexType> </xsd:sequence> </xsd:complexType> </xsd:schema> Schema
29
Diagramme XML Spy Schema
30
Diagramme de type (XML Spy)
Choix Séquence Tas Schema
31
Réutilisation de déclarations
Possibilité de référencer un élément plus global <element ref="Nom" /> (ci-dessus) Importe l'élément et son type Possibilité d'inclure les types associés à un espace de noms <import nameSpace = " ..." schemaLocation = " ..." /> Possibilité d'étendre un schéma <redefine schemaLocation=" ..."/> Extensions ... </redefine> Schema
32
Autres possibilités ... Mixed Content Empty Content anyType
Annotations Attribute Groups Nil Values Abstract Elements & Types Target Namespaces & Unqualified Locals Qualified Locals Global vs. Local Declarations Undeclared Target Namespaces Substitution Groups Schema
33
Comment concevoir DTD/Schema ?
A la main syntaxe complexe, devient illisible Interface graphique IDE partir d'un fichier d'exemples générer un premier schéma via l'outil modifier le schéma graphiquement A partir de UML décrire données avec UML générer un modèle logique hiérarchique Schema
34
Rappels UML * Modélisation de données et traitements
Concepts pour les données paquetage (package) classe attribut association agrégation généralisation Contraintes associations 0..* ou 1..* (*,+) attributs avec nul possible (?) généralisation exclusive Diagramme de classes Classe1 SClasse1 SClasse2 {exclusif} Classe3 Classe4 * 1..* Attribut1 Attribut2 Schema
35
Conception UML de schémas
Possible à partir d'une modélisation UML Définir des paquetages de classes et associations Orienter les associations arbre Préciser les types de données Possibilité d'hériter de stéréotypes XML Voir "Modeling XML Applications with UML" David Carlson, A. Wesley Intégrer aux produits Rose, Objecteering, Designer, HyperModel ... Schema
36
De UML à XML : les choix Choix des messages (documents)
agrégation d'éléments classes fortement liées N instances Choix des identifiants et liens références pour associations Attributs versus éléments les attributs jouent un rôle descriptif ("méta") Choix des cardinalités obligatoire ou optionnel (?) 0..* (*) ou 1..* (+) Schema
37
Exemple: Publier une BD
Package Commandes Package Client Commande Client 1..* 1..* num int passer code : int statut : char nom : text total : float type : CCC 0..* livrer gérer 0..* 0..* 1..* 1..* Magasin Ligne numero : int quantite : int rue : text article : CCNNN complement : text statut : char code_postal : int total : FRF ville : text Schéma UML Schema
38
Vue hiérarchique Orientation des associations Génération des liens
obtenir un arbre éviter les duplicats Génération des liens attributs IDREF externes ou hyperliens Package Commandes Commande num int Client refID statut : char total : float Magasin refID 1..* 1..* Ligne quantite : int article : CCNNN statut : char total : FRF Schema
39
Définition des types complexes
<!-- Types de base--> <!ENTITY % int "(#PCDATA)"> <!ENTITY % float "(#PCDATA)"> <!ENTITY % char "(#PCDATA)"> <!ENTITY % string "(#PCDATA)"> <!-- Classe Commande --> <!ELEMENT Commande (cstatut, ctotal, Ligne+)> <!ATTLIST Commande NUM ID #REQUIRED> <!ELEMENT cstatut %char;> <!ELEMENT ctotal %float;> <!-- Classe Ligne --> <!ELEMENT Ligne (article, quantite, statut?, total?)> <!ELEMENT article %string;> <!ELEMENT quantite %int;> <!ELEMENT lstatut %char;> <!ELEMENT ltotal %float;> Schema
40
Composition du message
<?xml version="1.0" standalone="yes"?> <!DOCTYPE MESSAGE [ <!ELEMENT MESSAGE (Commande*)> <!ENTITY %Type SYSTEM "Type.dtd"> %Type; ]> <MESSAGE> <Commande NUM="1"> <cstatut> A </cstatut> <ctotal>1000</ctotal> <Ligne> <article>212</article> <quantite>100</quantite> </Ligne> </Commande> <Commande NUM="2"> <cstatut> B </cstatut> <quantite>300</quantite> <article>412</article> <quantite>400</quantite> </MESSAGE> Schema
41
Produits: HyperModel De XML à UML et vice-versa
Représentation XMI du modèle UML XMI = jargon XML de l'OMG pour modèle objet Traduction en toute sorte de modèle logique Ajoutable à Eclipse Schema
42
HyperModel et Eclipse Schema
43
4. Les outils de développement
IDE = Integrated Developement Environment Des éditeurs De texte XML, parfois avec structure séparée De schéma XML, avec interface graphique De règles XSL, avec moteur de transformation De requêtes XQuery, avec moteur sur document De description WSDL, avec wrapper Web Service Des interfaces XML Aux fichiers Aux bases de données Aux applications Le plus fameux : XML Spy (voir démo.)
44
Quelques outils de travail
Editeur Outil Support Tibco Turbo XML DTD, XSL, XQuery Schéma Altova XMLSpy DTD, Schéma XSL, XQuery SyncRO Ltd. Oxygen Data Junction XML Junction Insight Soft. XMLMate DTD, Schéma, XSL, XPath XML Mind XMLMind Editor Schema
45
Stylus Studio Editeur graphique de XML et schéma
XQuery requête, edition, debaugage et profilage Interrogation et mise à jour de BD relationnelles Support de XPath 2.0 Editeur et moteur XSLT Composeur d’appel de Web service
46
Oxygen Editeur XML textuel et arborescent
Editeur XSLT 2.0, validation, transformation, debogage, moteurs variés (Xalan, Saxon, XSLTProc, MSXML,…) Editeur XQuery, débogueur, moteur doc. Editeur et validateur XML Schema (diagramme), Relax NG (diagramme), NRL, DTD, Schematron. Moteur de validation multiples: Xerces, XSV, LIBXML, MSXML, MSXML.NET, Saxon, SQC XML Diff et Merge.
47
Principaux poduits de Altova
Altova XMLSpy® 2006 is the industry standard XML development environment for modeling, editing, debugging and transforming all XML technologies, then automatically generating runtime code in multiple programming languages. Altova MapForce® 2006 is the premier data mapping and Web services implementation tool with the power to integrate any combination of XML, database, text, and/or EDI files, and build Web services by mapping between WSDL operations. Altova StyleVision® 2005 is the ultimate electronic forms, database report, and stylesheet designer for transforming XML and database content into HTML, PDF and Word/RTF output. StyleVision supports XSLT 1.0/2.0, XSL:FO, and all major database Altova UModel® 2006 is the starting point for successful software development. Visually design application models and generate Java or C# code, or reverse engineer existing programs into UML 2.1 diagrams. It is the simple, cost-effective way to draw on UML. Altova DiffDog® 2005 is the dedicated differencing utility for developers and power users. This easy, powerful synchronization tool quickly compares files and folders then highlights differences and merges content via an elegant GU Altova Authentic® 2005 is a FREE content editor that allows non-technical users to modify content in XML documents and databases. Just fill in electronic forms using the intuitive, word-processor style interface, and your data is instantly updated.
48
Bilan DTD, Schéma, IDE Les DTD définissent la grammaire des documents
Elles sont de plus en plus souvent remplacées par des schémas Le standard est un peu complexe (Relax) mais suivi Un IDE est indispensable Et de moins en moins gratuit … Questions ? Schema
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.