Title: Conception et Manipulations des Documents
1Conception et Manipulations des Documents
- 1. Introduction
- 2. DTD
- 3. Schéma
- 4. Outils
21. 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
3Validité 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
42. 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
5Déclaration d'élément simple
- lt! ELEMENT balise (définition) gt
- 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
- lt! ELEMENT Nom (PCDATA)gt
- ltNomgtVictor Hugolt/Nomgt
DTD
6Dé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 - lt! ELEMENT balise (composition) gt
DTD
7Exemple d'élément composé
- Â lt!ELEMENT personne (nom, prenom, tel?, adresse)
gt - lt!ELEMENT nom (PCDATA) gtÂ
- lt!ELEMENT prenom (PCDATA) gtÂ
- lt!ELEMENT tel(PCDATA) gtÂ
- lt!ELEMENT email (PCDATA) gt
- lt!ELEMENT adresse (ANY) gt
- ltpersonnegtÂ
- ltnomgtHugolt/nomgtÂ
- ltprenomgtVictorlt/prenomgtÂ
- ltprenomgtCharleslt/prenomgt
- lttelgt01120243lt/telgtÂ
- ltadressegtltruegtlt/ruegtltvillegtParislt/villegtlt/adressegt
- Â lt/personnegt
DTD
8Déclaration d'attributs
- lt! ATTLIST balise Attribut Type Mode gt
- 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
- lt! ATTLIST balise Attribut (Valeur1 Valeur2
... ) gt - 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
9Exemple d'attributs
- lt! ATTLIST personne
- num ID,
- age CDATA,
- genre (Masculin Feminin ) gt
- lt!ELEMENT auteur (PCDATA) gtÂ
- lt!ELEMENT editeur (PCDATA) gtÂ
- lt!ATTLIST auteur genre (Masculin
Feminin ) REQUIRED ville CDATA
IMPLIEDgt - lt!ATTLIST editeur ville CDATA
FIXED "Paris"gt
DTD
10Exemple de DTD
- lt!ELEMENT doc (livre article) gt
- lt!ELEMENT livre (titre, auteur) gt
- lt!ELEMENT article (titre, auteur) gt
- lt!ELEMENT titre(PCDATA) gt
- lt!ELEMENT auteur(nom, adresse) gt
- lt!ATTLIST auteur id ID REQUIRED gt
- lt!ELEMENT nom(prenom?, nomfamille) gt
- lt!ELEMENT prenom (PCDATA) gt
- lt!ELEMENT nomfamille (PCDATA) gt
- lt!ELEMENT adresse (ANY) gt
DTD
11Exemple de DTD interne
- lt?XML version"1.0" standalone"yes"?gt
- lt!DOCTYPE CATALOGUE
- lt!ELEMENT CATALOGUE (VINS)gt
- lt!ELEMENT VINS (SPECIFICATION, ANNEE, PRIX)gt
- lt!ATTLIST VINS NOM CDATA REQUIREDgt
- lt!ELEMENT SPECIFICATION EMPTYgt
- lt!ATTLIST SPECIFICATION PROVENANCE CDATA
REQUIRED COULEUR CDATA REQUIREDgt - lt!ELEMENT ANNEE (PCDATA)gt
- lt!ELEMENT PRIX (PCDATA)gt gt
- ltCATALOGUEgt
- ltVINS NOM"Saint-Emilion"gt
- ltSPECIFICATION PROVENANCE"Bordeaux"
COULEUR"Rouge"/gt - ltANNEEgt1999lt/ANNEEgt
- ltPRIXgt25 lt/PRIXgt
- lt/VINSgt...
- lt/CATALOGUEgt
DTD
12Exemple de ID et IDREF
- lt?xml version"1.0" standalone"yes"?gt
- lt!DOCTYPE DOCUMENT
- lt!ELEMENT DOCUMENT(PERSONNE)gt
- lt!ELEMENT PERSONNE (PCDATA)gt
- lt!ATTLIST PERSONNE PNUM ID REQUIREDgt
- lt!ATTLIST PERSONNE MERE IDREF IMPLIEDgt
- lt!ATTLIST PERSONNE PERE IDREF IMPLIEDgt
- gt
- ltDOCUMENTgt
- ltPERSONNE PNUM "P1"gtMarielt/PERSONNEgt
- ltPERSONNE PNUM "P2"gtJeanlt/PERSONNEgt
- ltPERSONNE PNUM "P3" MERE"P1"
PERE"P2"gtPierrelt/PERSONNEgt - ltPERSONNE PNUM "P4" MERE"P1"
PERE"P2"gtJulielt/PERSONNEgt - lt/DOCUMENTgt
DTD
13DTD externe
- Modèle pour plusieurs documents
- partage des balises, attributs et structures
- Définition locale ou externe
- lt!DOCTYPE doc SYSTEM "doc.dtd"gt
- lt!DOCTYPE doc PUBLIC
- "www.myweb.com/doc.dtd"gt
- Exemple de document
- lt?xml version"1.0" standalone"no"?gt
- lt!DOCTYPE VINS SYSTEM "vins.dtd"gt
- ...
DTD
14DTD Entité paramètre
- Permet la définition d'un groupe d'éléments sous
un nom (macro) - lt!ENTITY nom "definition"gt
- Réutilisable dans une DTD par simple appel
- nom
- Exemple
- lt!ENTITY genres "(homme femme)"gtlt!ATTLIST
auteur genre genres REQUIREDgt - Peuvent être externes
- lt!ENTITY mpeg PUBLIC "http//www.myweb.fr/fic.dtd
"gt
DTD
15Quelques 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
16Insuffisance des DTD
- Pas de types de données
- 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
DTD
173. 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
18Objectifs 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
19Le 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
20Les types simples (1)
- string
- Confirm this is electric
- normalizedString
- Confirm this is electric
- token
- Confirm this is electric
- byte
- -1, 126
- unsignedByte
- 0, 126
- base64Binary
- GpM7
- hexBinary
- 0FB7
- integer
- -126789, -1, 0, 1, 126789
- positiveInteger
- 1, 126789
- negativeInteger
- -126789, -1
- nonNegativeInteger
- 0, 1, 126789
- nonPositiveInteger
- -126789, -1, 0
- int
- -1, 126789675
- unsignedInt
- 0, 1267896754
Schema
21Les types simples (2)
- long
- -1, 12678967543233
- unsignedLong
- 0, 12678967543233
- short
- -1, 12678
- unsignedShort
- 0, 12678
- decimal
- -1.23, 0, 123.4, 1000.00
- float
- -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN
- double
- -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN
- boolean
- true, false 1, 0
- time
- 132000.000, 132000.000-0500
- dateTime
- 1999-05-31T132000.000-0500
- duration
- P1Y2M3DT10H30M12.3S
- date
- 1999-05-31
- gMonth
- --05--
- gYear
- 1999
Schema
22Les types simples (3)
- gYearMonth
- 1999-02
- gDay
- ---31
- gMonthDay
- --05-31
- Name
- shipTo
- QName
- poUSAddress
- NCName
- USAddress
- anyURI
- http//www.example.com/,
- http//www.example.com/doc.htmlID5
- Â
- language
- en-GB, en-US, fr
- ID
- "A212"Â
- IDREF
- "A212"
- IDREFS
- "A212" "B213"
- ENTITY
- ENTITIES
- NOTATION
- NMTOKEN, NMTOKENS
- US
- Brésil Canada Mexique
Schema
23Commandes 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
24Les types complexes
- Définition d'objets complexes
- ltsequencegt collection ordonnée d'éléments typés
- ltallgt collection non ordonnée d'éléments typés
- ltchoicegt choix entre éléments typés
- Exemple
- ltxsdcomplexType name"AddresseFR"gt
- ltxsdsequencegt
- ltxsdelement name"nom" type"xsdstring"/gt
- ltxsdelement name"rue" type"xsdstring"/gt
- ltxsdelement name"ville"
type"xsdstring"/gt - ltxsdelement name"codep"
type"xsddecimal"/gt - lt/xsdsequencegt
- ltxsdattribute name"pays" type"xsdNMTOKEN"
fixed"FR"/gt - lt/xsdcomplexTypegt
Schema
25Hé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
- ltcomplexType name"AdressePays"gt
- ltcomplexContentgt
- ltextension base"Adresse"gt
- ltsequencegt
- ltelement name"pays" type"string"/gt
- lt/sequencegt
- lt/extensiongt
- lt/complexContentgt
- lt/complexTypegt
Schema
26Les patterns
- Contraintes sur type simple prédéfini
- Utilisation d'expression régulières
- Similaires à celles de Perl
- Exemple
- ltxsdsimpleType name"NumItem"gt
- ltxsdrestriction base"xsdstring"gt
- ltxsdpattern value"\d3-A-Z2"/gt
- lt/xsdrestrictiongt
- lt/xsdsimpleTypegt
Schema
27XML Schema exemple (1)
- ltxsdschema xmlnsxsd"http//www.w3.org/1999/XMLS
chema"gt - ltxsdelement name"commande" type"CommandeType"/gt
- ltxsdelement name"commentaire"
type"xsdstring"/gt - ltxsdcomplexType name"CommandeType"gt
- ltxsdsequencegt
- ltxsdelement name"livrer" type"Adresse"/gt
- ltxsdelement name"facturer" type"Adresse"/gt
- ltxsdelement ref"commentaire" minOccurs"0"/gt
- ltxsdelement name"produits" type"ProduitType"/
gt - lt/xsdsequencegt
- ltxsdattribute name"date_com" type"xsddate"/gt
- lt/xsdcomplexTypegt
Schema
28XML Schema exemple (2)
- ltxsdcomplexType name"ProduitType"gt
- ltxsdsequencegt
- ltxsdelement name"produit" minOccurs"0"
maxOccurs"unbounded"gt - ltxsdcomplexTypegt
- ltxsdsequencegt
- ltxsdelement name"nom_prod"
type"xsdstring"/gt - ltxsdelement name"quantite"gt
- ltxsdsimpleTypegt ltxsdrestriction
base"xsdpositiveInteger"gt - ltxsdmaxExclusive value"100"/gt
lt/xsdrestrictiongt - lt/xsdsimpleTypegt
- lt/xsdelementgt
- ltxsdelement name"prix" type"xsddecimal"/gt
- ltxsdelement ref"commentaire"
minOccurs"0"/gt - ltxsdelement name"date_livraison"
type"xsddate" minOccurs"0"/gt - lt/xsdsequencegt
- ltxsdattribute name"num_prod"
type"xsdpositiveInteger" use"required"/gt - lt/xsdcomplexTypegt
- lt/xsdelementgt
- lt/xsdsequencegt lt/xsdcomplexTypegt
lt/xsdschemagt
Schema
29Diagramme XML Spy
Schema
30Diagramme de type (XML Spy)
Choix
Tas
Séquence
Schema
31Réutilisation de déclarations
- Possibilité de référencer un élément plus global
- ltelement ref"Nom" /gt (ci-dessus)
- Importe l'élément et son type
- Possibilité d'inclure les types associés à un
espace de noms - ltimport nameSpace "http// ..."
- schemaLocation "http// ..." /gt
- Possibilité d'étendre un schéma
- ltredefine schemaLocation"http// ..."/gt
- .... Extensions ...
- lt/redefinegt
Schema
32Autres 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
33Comment 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
34Rappels 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
Schema
35Conception 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
36De 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
37Exemple Publier une BD
Package Client
Package Commandes
Commande
Client
1..
1..
passer
num int
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
38Vue hiérarchique
- Orientation des associations
- 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
Magasin refID
total float
1..
1..
Ligne
quantite int
article CCNNN
statut char
total FRF
Schema
39Définition des types complexes
- lt!-- Types de base--gt
- lt!ENTITY int "(PCDATA)"gt
- lt!ENTITY float "(PCDATA)"gt
- lt!ENTITY char "(PCDATA)"gt
- lt!ENTITY string "(PCDATA)"gt
- lt!-- Classe Commande --gt
- lt!ELEMENT Commande (cstatut, ctotal, Ligne)gt
- lt!ATTLIST Commande NUM ID REQUIREDgt
- lt!ELEMENT cstatut chargt
- lt!ELEMENT ctotal floatgt
- lt!-- Classe Ligne --gt
- lt!ELEMENT Ligne (article, quantite, statut?,
total?)gt - lt!ELEMENT article stringgt
- lt!ELEMENT quantite intgt
- lt!ELEMENT lstatut chargt
- lt!ELEMENT ltotal floatgt
Schema
40Composition du message
- lt?xml version"1.0" standalone"yes"?gt
- lt!DOCTYPE MESSAGE
- lt!ELEMENT MESSAGE (Commande)gt
- lt!ENTITY Type SYSTEM "Type.dtd"gt
- Type
- gt
- ltMESSAGEgt
- ltCommande NUM"1"gt
- ltcstatutgt A lt/cstatutgt
- ltctotalgt1000lt/ctotalgt
- ltLignegt
- ltarticlegt212lt/articlegt
- ltquantitegt100lt/quantitegt
- lt/Lignegt
- lt/Commandegt
- ltCommande NUM"2"gt
- ltcstatutgt B lt/cstatutgt
- ltctotalgt1000lt/ctotalgt
- ltLignegt
- ltarticlegt212lt/articlegt
- ltquantitegt300lt/quantitegt
- lt/Lignegt
- ltLignegt
- ltarticlegt412lt/articlegt
Schema
41Produits 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
- http//xmlmodeling.com
Schema
42HyperModel et Eclipse
Schema
434. 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.)
44Quelques outils de travail
Schema
45Stylus 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 dappel de Web service
46Oxygen
- 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.
47Principaux 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, XSLFO, 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.
48Bilan 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
Schema