Didier DONSEZ Universit Joseph Fourier IMA IMAG/LSR/ADELE Didier.Donsez@imag.fr, Didier.Donsez@ieee.org http://www-adele.imag.fr/~donsez/cours Ce cours est sur http://www-adele.imag.fr/~donsez/cours/xml.pdf 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 2 Les Applications XML RDF RSS SVG XHTML XForm WML BPML ebXML RosettaNet XAML OAGIS xCBL B2C EAI B2B XSL-T XSL-FO WSDL SOAP UDDI Web Services BPML CDF cXML XUL JXTA P2P 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 3 Au sommaire IPrincipes de SGML et Limites de HTML ILe typage de document DTD, Namespace, XML Schema ILOutillage XML XPath, Xquery, XSL-T, XSL-FO ILes API SAX, DOM ILes Applications IBibliographie 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 4 Principe de la GED Gestion Electronique Documentaire IGestion des Documents de l entreprise Documents commerciaux catalogues, fiches produits, factures, Documents techniques spcifications techniques, manuels utilisateur, manuels d entretien, Documents qualits suivi de fabrication de lots, rapports d incident, Volume : 90% de l information est sous cette forme IObjectif de la GED Reprsentation uniforme voir normalise Archivage Recherche 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 5 Exemple de Document Structur I Document structur comporte des parties ayant une signification particulire I Exemple |------titre=Autour d&xml; | |------date=1998 | |----paragraphe1 | |----figure1 | |---section1---|----paragraphe2 | | |----paragraphe3 |--chapitre1---| | | |----paragraphe1 | |---section2---|----paragraphe2 | |----figure2 | |----paragraphe3 livre-----| | |-------------------titre | | | | |----paragraphe1 | | |----figure3 |--chapitre2---|---section1---|----paragraphe2 |----paragraphe3 I La GED utilise des documents structurs je recherche tous les documents dont le titre contient XML ! 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 6 Un peu d histoire Les Principes de SGML and Co Un ensemble ae stanaaras pour les aocuments structures I SGML [Goldfarb, 74] : Standard Generalized Markup Language (ISO 8879) Description de la structure d un type de document Les documents de ce type respectent la structure I DSSSL : Document Style Semantics and Specification Language Feuille de style associe un type de document I SPDL : Standard Page Description Langage Formatage des documents SGML (+DSSSL) DTD SGML Vrification Doc Balis Style Spec DSSSL Formatage Rsrc Typo Doc Balis Vrifi Doc SPDL Doc PDF Doc PS 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 10 Limites de HTML IHTML 4.0 et DHTML extensibilit par la normalisation pas de validation de la structure ISGML structure smantique et type de document (DTD) mais reste compliqu et non intgr aux browsers IXML principes de SGML mais simplification de la DTD 1 2 / 1 1 / 2 0 0 3 Didier Donsez, 1998-2003, XML 1 1 H T M L
v s .
X M L 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 12 XML eXtensible Markup Language I Document Standalone Les documents sont bien forms (well formea), I Document Type Definition, DTD Typage de documents structurs et extensibles Les documents sont valides (valia) I XML Schema Schema des documents Exprim en syntaxe XML et extensible (contrairement la DTD) I Extensible Stylesheet Language, XSL Transformation et rorganisation d un document XML I Xlink, XPointers Hyperliens volus 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 14 Les Documents XML IIls sont structurs en lment IIls doivent tre Bien Forms (Well formed) balisage la SGML cependant <element> et </element> obligatoires sauf <empty_element/> la valeur des attributs est toujours entre double cote <element attr="valeur"/> IIls peuvent tre VaIids (Valid) Utilis une DTD (Document Type Definition) ou un schma XML qui dfinit la structure d un type de document DTD XML : Simplification de la grammaire SGML des DTDs Conformance: pour toute DTD XML , il existe une DTD SGML conforme 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 15 Exemple de documents XML (i) IUn document XML bien form <?xm| vers|on="1.0" stende|one="yes"?> <greet|ng>he||o,<br|>wor|d!<|greet|ng> IUn document XML valide incluant une DTD <?xm| vers|on="1.0" encod|ng="UTF-8" ?> <!006TYPE greet|ng [ <!ELEHENT greet|ng (#P60ATA[br)*> <!ELEHENT br EHPTY> }> <greet|ng>he||o,<br|>wor|d!<|greet|ng> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 16 Exemple de documents XML (ii) IUn document XML valide utilisant un DTD externe <?xm| vers|on="1.0"?> <!006TYPE greet|ng 8Y8TEH "he||o.dtd"> <greet|ng> he||o,<br|>wor|d!<|greet|ng> IUn document XML valide utilisant un schema XML <greet|ng xm|ns:xs|="http:||www.w3.org|1999|XHL8cheme-|nstence" xs|:noNemespece8chemeLocet|on=greet|ng.xsd'> <greet|ng> he||o,<br|>wor|d!<|greet|ng> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 17 Exercice Donnez un document XML reprsentant cette recette 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 18 Gnralits sur les documents XML ILes caractres codage Unicode (34168 symboles de 24 alphabets) les parsers traitent au minimun UTF-8 et UTF-16 ILes espaces les caractres , \r , \n, \t sont considrs comme des sparateurs (texte XML au kilomtre ) ILes identificateurs respect de la casse ! ILes commentaires <!-- 6ec| est un commente|re b|e b|e b|e qu| se term|ne |c| --> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 19 La structure d un document ILe prologue ILa DTD ILes lments ILes balises (tags) ILes attributs ILes rfrences aux entits ILes rfrences aux caractres ILes sections CDATA ILes donnes 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 20 La structure d un document XML ILe prologue <?xm| vers|on="1.0"?> <?xm| vers|on="1.0" encod|ng="|80-8859-1" ?> spcifie le type d encodage du texte <?xm| vers|on="1.0" encod|ng="UTF-8" stende|one="yes" ?> le document est standalone : il n a pas de DTD cependant le balisage doit tre quilibr ILes instructions de traitements instructions destines aux applications qui traiteront le document <?epp||cet|on |nstruct|on+ ?> Exemple avec les feuilles de style <?xm|-sty|esheet type="text|xs|" href="ert|c|e2xhtm|.xs|"?> <?xm|-sty|esheet type="text|css" href="ert|c|e.css"?> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 21 La structure d un document XML ILa dclaration du type DOCTYPE Rfrence un fichier contenant la DTD Priv <!006TYPE greet|ng 8Y8TEH "he||o.dtd"> <!006TYPE greet|ng 8Y8TEH "http:||www.mycomp.com|dtds|he||o.dtd"> Rfrence un fichier contenant la DTD public <!006TYPE commende PUL|6 "-||YA0ET0U 0NL|NE 8A||0T0 des commendes||FR" "http:||www.yedetou.fr|dtds|commende.dtd"> type||propr|te|re||motc|s descr|pt|on|||engue Inclusion de la DTD <!006TYPE greet|ng [ <!ELEHENT greet|ng (#P60ATA[br)*> <!ELEHENT br EHPTY> }> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 23 La structure d un document XML La DTD : Document Type Definition ILa dclaration des entits Entit gnrale interne uniquement utilis dans le document sous la forme &t|tre; <!ENT|TY t|tre "XHL pour |es nu|s"> Entit paramtre interne uniquement dans la DTD <!ENT|TY 7ettneme "neme |0 #RE0U|RE0"> Entit paramtre externe uniquement dans la DTD <!ENT|TY 7nouveeu 8Y8TEH "nouveeu.txt"> Entit gnrale externe uniquement dans la DTD <!ENT|TY erch PUL|6 "erch|ve.z" N0ATA gz|p> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 24 La structure d un document XML La DTD : Document Type Definition ILa dclaration des lments Contenu Vide <!ELEHENT |dent EHPTY> Contenu quelconque <!ELEHENT |dent ANY> contient une structure XML quelconque (mais quilibre) Contenu lments fils <!ELEHENT |dent ((f||s1+,f||s2*[f||s3+)[(f||s4,f||s5?))> contient des lments rgit par un expression rgulire , squence ; | alternative ; multiplicateur * 0-N ; + 1-N ; ? 0-1 Contenu mixte <!ELEHENT |dent (#P60ATA)> <!ELEHENT |dent (#P60ATA[f||s+)> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 25 La structure d un document XML La DTD : Document Type Definition ILa dclaration des attributs <!ATTL|8T nome|ement nomettr|but type dfeut nomettr|but type dfeut ... > IDfaut #|HPL|E0 Optionnel #RE0U|RE0 Obligatoire #F|XE0 've|eur' Fix la valeur 've|eur' Valeur par dfaut 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 26 La structure d un document XML La DTD : Document Type Definition ITypes dattribut (i) Types chane de caractres 60ATA <!ATTL|8T doss|er chem|n 60ATA #|HPL|E0 > Type Prdfini ENT|TY, ENT|T|E8 nom (ou liste de noms) d entits non XML prcdemment dclares Type Prdfini NHT0KEN, NHT0KEN8 nom (ou liste de noms) de mots cl <!ATTL|8T f|ch|er xm|:|eng NHT0KEN #RE0U|RE0 'fr'> Valeurs numres <!ATTL|8T erch|ve codege N0TAT|0N (gz|p[compress) #RE0U|RE0> <!ATTL|8T erch|ve codege (gz|p[compress) 'gz|p'> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 27 Exercice Donnez la DTD de ce document recette <?xm| vers|on="1.0" encod|ng="|80-8859-1" ?> <!006TYPE recette 8Y8TEH "http:||www.cook.org|dtds|recette.dtd"> <recette t|tre="Flan de chez ta mre" euteur="Didier Donsez"> <|ngred|ents> <|ngred|ent mesure="6" un|te="gramme">oeuf<||ngred|ent> <|ngred|ent mesure="6" un|te="tasse caf">lait<||ngred|ent> <|ngred|ent mesure="6" un|te="cuillre soupe">sucre<||ngred|ent> <|ngred|ent mesure="1" un|te="zeste">citron<||ngred|ent> <||ngred|ents> <|nstruct|ons> <|nstruct|on>mlanger et battre au fouet tous les ingrdients<||nstruct|on> <|nstruct|on>caramliser le fond et les parois du moule<||nstruct|on> <|nstruct|on>verser dans le moule<||nstruct|on> <cu|sson mode=" bain maire au four" tempereture="160C" duree="40 minutes"|> <|nstruct|on>sortir du four et laisser refroidir au rfrigrateur 6 heures<||nstruct|on> <||nstruct|ons> <remerque>Rentre chez ta mre, elle t'a fait un flan !<|remerque> <|recette> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 28 La structure d un document XML La DTD : Document Type Definition ITypes dattribut (ii) Type Prdfini |0 Identifiant unique dans le document <!ATTL|8T doss|er reference |0 #RE0U|RE0 > Type Prdfini |0REF, |0REF8 rfrence (ou liste de rf) d identifiants ID du document <!ATTL|8T f|ch|er doss|er |0REF #RE0U|RE0 > 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 29 Exercice Donnez la DTD et les lments de ce graphe AIice DeIapIace (1933-) Bob Dupont (1930-1990) Cary DeIatour (1934-) DanieI Durant (1929-) EIisa Dupont (1953-) Fred Durant (1954-) GIoria Dupont (1956-) Henri Durant (1955-) Jean Durant (1977-) Ins Durant (1976-) Kvin Durant (1979-) Laura Martin (1980-) 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 30 La structure d un document XML La DTD : Document Type Definition I Les sections conditionnelles versions alternatives de structures dans un mme DTD <![7deve|oppement;[ <!ELEHENT doss|er ANY> }}> <![7f|ne|;[ <!ELEHENT doss|er (f|ch|er*[erch|ve*)> }}> dpend de la dclaration d entits <!ENT|TY 7deve|oppement '|N6LU0E'> <!ENT|TY 7f|ne| '|6N0RE'> <![/h6LJ0E[ <!ELEHEh7 dcssier AhY> ]]> <![/Ch0RE[ <!ELEHEh7 dcssier (fichier*[erchive*}> ]]> <!ENT|TY 7deve|oppement '|6N0RE'> <!ENT|TY 7f|ne| '|N6LU0E'> <![/Ch0RE[ <!ELEHEh7 dcssier AhY> ]]> <![/h6LJ0E [ <!ELEHEh7 dcssier (fichier*[erchive*}> ]]> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 32 La structure d un document XML ILes lments baliss (tags) et leurs attributs <doss|er |d="123" chem|n="c:doccompteb|e" > <f|ch|er nom="commende11022000.txt"> des ch|ffres pour |e commende du ||vre &|t;&t|tre;> <|f|ch|er> <f|ch|er nom="commende12022000.txt"> d 'eutres ch|ffres <|f|ch|er> <e||es ref ="123"|> <|doss|er> ILes rfrences aux entits et aux caractres &|t; &t|tre; > ILes sections CDATA (non parss) <![60ATA[dens |e chep|tre sur <?xm| vers|on="1.0"?> }}> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 34 SDD : Standalone Document Declaration I Omission de la DTD mme si le document n appartient aucun type de document il doit nanmoins tre bien form quilibrage des start tags et end tags et le tag <emptyelement/> pour les lments vides I Exemple <?xml version="1.0" standalone="yes"?> <conversation> <greeting>Hello, world!</greeting> <response> >Stop the planet <pic src="earth"/>, I want toget off!< </response> </conversation> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 35 XML NameSpaces ICollection d identificateurs (lment ou attribut) identifi par un prfixe et une URI IDclaration <element xmlns:prefixe=URI> Exemple <html xmlns=http://www.w3.org/TR/REC-html40 xmlns:order=http://www.mycomp.com/order-spec> le premier namespace (html) est celui par dfaut 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 36 XML NameSpaces <?xml version="1.0"?> <html xmlns=http://www.w3.org/TR/REC-html40 xmlns:order=http://www.mycomp.com/order-spec> <table border="1"> <th>Gencod</th><th>Quantity</th> <tr> <td> <order:gencod>14255637</order:gencod></td> <td> <order:quantity order:value="10"/></td> </tr> <tr> <td> <order:gencod>84975388</order:gencod></td> <td> <order:quantity order:value="20"/></td> </tr> </table> </html> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 37 XML NameSpaces IDclaration dans une DTD le namespace est dclar comme une constante <!ELEMENTorder:gencod(#PCDATA)> <!ATTLIST order:gencod xmlns:order CDATA #FIXED "http://www.mycomp.com/order-spec"> > 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 38 Porte d un NameSpaces Un autre dclation de nom de domaine remplace le prdent dans les lments inclus et ses descendants IExemple <?xml version="1.0"?> <bk:bookxmlns:bk=urn:loc.gov:books xmlns:isbn=urn:ISBN:0-395-36341-6> <bk:title>Cheaper bythe Dozen</bk:title> <isbn:number>1568491379</isbn:number> </bk:book> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 39 XML Catalog ICatalogue de DTD Publiques 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 40 XML Schema le remplacant de la DTD ILimite des DTD description limit des documents structures pas de typage des PCDATA Limite exprim dans un langage autre XML autre parser, ... IObjectif de XML Schema Amlioration du typage : xsi donnes obssant une expression rgulire Amlioration de la structure : xsd nombre born d lments inclus, ... IRemplace de plus en plus la DTD IValidateurs XML Schema : Xerces 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 41 Les 2 parties de XML Schema IDatatype (Partie 2) dfinit un riche ensemble de types prdfinies incluant celui des langages de SGBD, ... IStructure (Partie 1) dfinit la construction de types (dit archetype) simples ou complexes nomms ou anonymes mcanismes d hritage (refinable archetype) support pour les namespaces validation de documents utilisant plusieurs namespaces 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 42 XML Schema - XSI ITypes primitifs <e|ement neme="pr|ce" type="f|oet"|> <e|ement neme="greet|ng" type="xsd:str|ng"|> <pr|ce>15.57<|pr|ce> <greet|ng |d="|d1">he||o<|greet|ng> IStructures <e|ement neme="ook"> <comp|exType> <e|ement neme="euthor" type="xsd:str|ng"|> <e|ement neme="t|t|e" type="xsd:str|ng"|> <|comp|exType> <|e|ement> <e:ook> <euthor>J.R.R To|k|en<|euthor> <t|t|e>A hobb|t story<|t|t|e> <|e:ook> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 43 XML Schema - XSI IEnumration <element name="color"> <simpleTypebase="xsd:string"> <enumerationvalue="Green"/> <enumerationvalue="Blue"/> </simpleType> </element> <color>Blue</color> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 44 XML Schema - XSI IRfrences <element name="salutation" type="xsd:string"/> <salutation href="#id1"/> <e:Book> <title>MyLife and Work</title> <firstauthor href="#Person-1"/> <secondauthor href="#Person-2"/> </e:Book> <e:Personid="Person-1"> <name>Henry Ford</name> <address xsi:type="m:Electronic-address"> <email>mailto:henryford@hotmail.com</email> <web>http://www.henryford.com</web> </address> </e:Person> <e:Personid="Person-2"> <name>Samuel Crowther</name> <address xsi:type="n:Street-address"> <street>Martin Luther King Rd</street> Loutillage XML 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 53 Loutillage XML IXPath IXQuery IXSL IAPIs danalyse et de construction 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 54 XPath I Recommandation du W3C I Expression de dsignation dun nud dans un document XML syntaxe simple et non ambigu type usuels: chanes, nombres, boolens, variables, fonctions spcifie une bibliothque de fonctions extensible position(), I Exemples |chepter[gtype="wern|ng"} ||p[pos|t|on()=5} I Utilis par XPointer et XSLT I Implmentation Package Xpath org.apache.xalan.xpath 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 55 Expressions XPath (i) / parent sect|on|peregrephe dsigne les <peregrephe> fils des <sect|on> de l lment courant. // parent tendu aux aeux . nud courant .. pre du nud courant | alternative @zzz attribut zzz du nud courant text() nuds CDATA fils du nud courant comment() nuds commentaires fils du nud courant pi() instructions de traitement du nud courant id() slection sur identifiant ou liste didentifiants 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 56 Expressions XPath (ii) I Condition de slection [ ] sect|on[gt|tre} <section> qui ont un attribut titre sect|on[peregrephe} <section> qui ont au moins un fils <paragraphe> sect|on[gt|tre='|ntroduct|on'} <section> qui ont un attribut titre dont la valeur est "Introduction" sect|on[peregrephe='|ntroduct|on'} <section> qui ont au moins un fils <paragraphe> dont la valeur est "Introduction" I Positionnement position()=5 vrai si llment est la 5me position f|rst-of-eny() vrai si l lment est le premier fils |est-of-eny() vrai si l lment est le dernier fils f|rst-of-type() vrai si l lment est le premier fils de son type f|srt-of-type() vrai si l lment est le dernier fils de son type 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 57 Expressions XPath (iii) IConnecteurs logiques (not,and,or) sect|on[not(gt|tre)} <section> qui n ont pas d attribut titre sect|on|peregrephe[f|rst-of-type() end |est-of-type()} <paragraphe> qui sont fils unique ! 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 59 Xquery http://www.w3.org/TR/xquery I Motivation tendre la dsignation XPath 1.0 Namespace dc:Creator tous les lments <Creator> appartenant au namespace dc: chapter/@li:title : l attribut title de prfixe li des lments <chapter> Collections d attributs @* : tous les attributs de l lment courant @li:* : tous les attributs de l lment courant identifis par le prfixe li Comparaisons complexes Oprateurs any et all
Construction de documents (alternative et complment XSLT) I Principe Langage fonctionnel semblable SQL, OQL, 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 60 Exemple XQuery <b|b> <book yeer="1994"> <t|t|e>T6P||P |||ustreted<|t|t|e> <euthor><|est>8tevens<||est><f|rst>w.<|f|rst><|euthor> <pub||sher>Add|son-wes|ey<|pub||sher> <pr|ce>5.95<|pr|ce> <|book> <book yeer="1992"> <t|t|e>Advenced Progremm|ng |n the Un|x env|ronment<|t|t|e> <euthor><|est>8tevens<||est><f|rst>w.<|f|rst><|euthor> <pub||sher>Add|son-wes|ey<|pub||sher> <pr|ce>5.95<|pr|ce> <|book> <book yeer="2000"> <t|t|e>0ete on the web<|t|t|e> <euthor><|est>Ab|tebou|<||est><f|rst>8erge<|f|rst><|euthor> <euthor><|est>unemen<||est><f|rst>Peter<|f|rst><|euthor> <euthor><|est>8uc|u<||est><f|rst>0en<|f|rst><|euthor> <|book> ... <|b|b> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 61 Exemple Xquery Recherche tendue document("bib.xml")//book[ some$l in ./author/last satisfiesstring(data($l)) = "Stevens"] 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 62 Exemple Xquery Construction dlments <resu|ts> { for $book |n ||book |et $euthors := $book|euthor return <book euthor6ount ={ count($euthors)}> { for $euthor |n $euthors return <euthor> { $euthor||est|text() } <|euthor> } <|book> } <|resu|ts> <resu|ts> <book euthor6ount="1"> <euthor>8tevens<|euthor> <|book> <book euthor6ount="1"> <euthor>8tevens<|euthor> <|book> <book euthor6ount="3"> <euthor>Ab|tebou|<|euthor> <euthor>unemen<|euthor> <euthor>8uc|u<|euthor> <|book> ... <|resu|ts> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 65 eXtensible Linking Language, XLL ILimite des rfrences (URL) en HTML ne rfrence qu un seul document granularit grosse de rfrence : le document accdes au 3me paragraphe qui suit le chapitre nomm "Introduction" pas de relations entre les documents. rfrence sens unique. ILes 2 parties de XLL Xlink : XML Linking Specification XPointer : XML Extended Pointer Specification 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 66 Xpointer XML Extended Pointer Specification adresse des objets internes la structure du document et ne possdant pas d identifiant Utilise les expressions Xpath Exemple http:||www.ucc.|e|xm||feq.sgm|#|0(feq-hypertext)6h|L0(2,*)(,*) dsigne le 6me objet inclus dans le 2me objet inclus dans l lment ayant un ID gale faq-hypertext . IA lire Recommanaation XPointer au W3C et le Chapitre 17 ae XML Bible 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 67 Xpointer XML Extended Pointer Specification Exemple http:||www-ede|e.|meg.fr|-donsez|exemp|e|coursxm|.xm| #|ntroduct|on #xpo|nter(|d("|ntroduct|on")) #xpo|nter(|chep|tre[2}|p[3}) #xpo|nter(||chep|tre[t|tre="|ntroduct|on"}| descendent::p[pos|t|on()=|est()}) #xpo|nter(|d("sec2.1")||p[2} to |d("sec2.2")||p[|est()}) #xpo|nter(str|ng-renge(||t|t|e,"6ours XHL")) 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 68 XLink : XML Linking Specification I spcifie les hyperliens dans un document XML liens simples, type <A href="..."> liens tendus: multisource, multicible, externes multi-direction, multi-cible, indpendance la localisation (en cas de changement de place du document), transclusion (document inclus), liens typs (attributs de lien). I A lire Recommanaation XLink au W3C et le Chapitre 16 ae XML Bible 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 69 XLink : XML Linking Specification I un lien simple: <students xlink:href="students.xml">The list of students.</students> I un lien tendu: <element xmlns:xlink="http://www.w3.org/1999/xlink/namespace/" xlink:type="extended"> <xlink:locator href="Source" role="role1"/> <xlink:locator href="Target" role="role2"/> <xlink:arcfrom="role1" to="role2" show="embed" actuate="auto"/> <xlink:title>The link title<xlink:title/> <xlink:title xml:lang="fr">Description du lien<xlink:title/> ... </element> I Annotations: <xlink:extended xmlns:xlink="http://www.w3.org/1999/xlink/namespace/" role="xlink:external-linkset"> <xlink:title>DVsLinks</xlink:title> <xlink:locator href="http://rpmfind.net/veillard/linkset.xml"/> </xlink:extended> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 70 Xinclude (http://www.w3.org/TR/xinclude/) I Inclusion de documents lors de lanalyse Modularit, rutilisabilit I Exemple VXEW[W 8entence 0 VXE[PO <?xm| vers|on='1.0'?> <chepter> <p>8entence 1. 8entence 2.<|p> <p><|>8entence 3. 8entence 4.<||> 8entence 5.<|p> <|chepter> GRF[PO <?xm| vers|on='1.0'?> <document xm|ns:x|="http:||www.w3.org|2001|X|nc|ude"> <p>The texte document conte|ns : <|p> <pre> <x|:|nc|ude href="sub1.txt" perse="text"|> <|pre> <p> The XHL document conte|ns :<|p> <x|:|nc|ude href="sub2.xm|#xpo|nter(chepter|p[1})"|> <|document> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 71 eXtensible Stylesheet Language, XSL I Dfinition de feuilles de style Bas sur ISO/IEC 10179 DSSSL Document Style Semantics and Specification Language I Fonctionnalits proposes fonctions simples r-ordonnancement des lments formatage des lments en fonction de leur position, de leur unicit ou par rapport aux lments parents et leur descendance. formatage incluant des textes et des graphiques, macros de formatage rutilisables
I 2 parties XSL-T Transformation (de XML vers XML [XHTML.WML.SJG..]) XSL-FO Formatting Object (de XML vers non-XML [PS.PDF.RTF..]) 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 72 XSLT - XSL Transformation IMotivations appliquer des transformations un document XML r-ordonnancement des lments, masquage d lments, ... vers un autre document XML en general visualisable comme XHTML. WML. SJG. JRML. SMIL . IAvantage un document XML peut tre subir des transformations diffrentes 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 73 Remarques sur XSLT IRemarque sur la maturit : Attention :les transformateurs nimplantent pas toujours XSLT compltement et ajoutent de plus des fonctionnalits et des lments supplmentaires. XALAN autorise lappel des fonctions Java IRemarque propos des CSS : quand la cible est du HTML4/XHTML1, XSLT doit tre utilis de manire combin avec les CSS IRemarque propos du formatage : XSLT peut tre utilis comme tape dans le formatage vers des documents non-XML (RTF. Wora. PostScript. PDF. LaTex. .) voir FOP (Formatting Object processor) 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 74 Principe de la transformation de XSLT IAppel la transformation instruction de traitement dans le document source XML <?xm|-sty|esheet type="text|xs|" href="ert|c|e2xhtm|.xs|"?> ILa feuille de style xsl:stylesheet liste ordonne de templates xsl:templatequi sont appliqus aux nuds de l arbre source IUn template xsl:template sous arbre du document de sortie comportant des lments de DTD de sortie et des lments xsl: IRgle xsl:template dtermine si le template est applicable un nud de l arbre source 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 75 Un exemple de transformation XSLT I 3cit un dccument scurce XHL <?xml version="1.0"?> <!DOCTYPE sales SYSTEM "sales.dtd"> <?xml-stylesheet type="text/xsl" href="sales2html.xsl"?> <sales> <division id="North"> <revenue>10</revenue><growth>9</growth><bonus>7</bonus> </division> <division id="South"> <revenue>4</revenue><growth>3</growth><bonus>4</bonus> </division> <division id="West"> <revenue>6</revenue><growth>-1.5</growth><bonus>2</bonus> </division> </sales> Instruction de traitement 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 76 Un exemple de transformation XSLT pour une sortie HTML (pour IE5.0) <xs|:sty|esheet xm|ns:xs|="http:||www.w3.org|TR|w0-xs|"> <xs|:temp|ete metch="|"> <htm|><heed><t|t|e>8e|es Resu|ts y 0|v|s|on<|t|t|e> <|heed><body> <xs|:epp|y-temp|etes|> <|body><|htm|> <|xs|:temp|ete> <xs|:temp|ete metch="se|es"> <teb|e border="1"> <tr><th>0|v|s|on<|th><th>Revenue<|th><th>6rowth<|th><th>onus<|th><|tr> <xs|:epp|y-temp|etes se|ect="d|v|s|on"|> <|teb|e> <|xs|:temp|ete> <xs|:temp|ete metch="se|es|d|v|s|on"> <tr><td><em><xs|:ve|ue-of se|ect="g|d"|><|em><|td><td><xs|:ve|ue-of se|ect="revenue"|><|td> <td><xs|:ve|ue-of se|ect="growth"|><|td><td><xs|:ve|ue-of se|ect="bonus"|><|td> <|tr> <|xs|:temp|ete> <xs|:temp|ete metch="*"><xs|:epp|y-temp|etes|><|xs|:temp|ete> <|xs|:sty|esheet> lment root lment(s) sales lment(s) division tout lment Appliqu les templates aux sous-arbres 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 77 Un autre exemple de transformation XSLT pour une sortie HTML <htm| xs|:vers|on="1.0" xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform"> <heed><t|t|e>8e|es Resu|ts y 0|v|s|on<|t|t|e><|heed><body> <teb|e border="1"> <tr><th>0|v|s|on<|th><th>Revenue<|th><th>6rowth<|th><th>onus<|th><|tr> <xs|:for-eech se|ect="se|es|d|v|s|on"><!-- order the resu|t by revenue --> <xs|:sort se|ect="revenue" dete-type="number" order="descend|ng"|> <tr><td><em><xs|:ve|ue-of se|ect="g|d"|><|em><|td> <td><xs|:ve|ue-of se|ect="revenue"|><|td> <td><xs|:|f test="growth &|t; 0"><!-- h|gh||ght neget|ve growth |n red --> <xs|:ettr|bute neme="sty|e"><xs|:text>co|or:red<|xs|:text><|xs|:ettr|bute <|xs|:|f> <xs|:ve|ue-of se|ect="growth"|> <|td> <td><xs|:ve|ue-of se|ect="bonus"|><|td> <|tr> <|xs|:for-eech> <|teb|e> <|body><|htm|> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 78 Le rsultat de la transformation vers HTML <htm|> <heed><t|t|e>8e|es Resu|ts y 0|v|s|on<|t|t|e><|heed> <body> <teb|e border="1"> <tr><th>0|v|s|on<|th><th>Revenue<|th><th>6rowth<|th><th>onus<|th><|tr> <tr><td><em>North<|em><|td><td>10<|td><td>9<|td><td>7<|td><|tr> <tr><td><em>west<|em><|td><td><|td><td sty|e="co|or:red">-1.5<|td><td>2<|td><|tr> <tr><td><em>8outh<|em><|td><td>4<|td><td>3<|td><td>4<|td><|tr> <|teb|e> <|body><|htm|> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 79 Un exemple de transformation XSLT pour une sortie SVG <xs|:sty|esheet vers|on="1.0" xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform" xm|ns="http:||www.w3.org|6reph|cs|8v6|8v6-19990812.dtd"> <xs|:output method="xm|" |ndent="yes" med|e-type="|mege|svg"|> <xs|:temp|ete metch="|"> <svg w|dth = "3|n" he|ght="3|n"> <g sty|e = "stroke: #000000"> <||ne x1="0" x2="150" y1="150" y2="150"|><||ne x1="0" x2="0" y1="0" y2="150"|> <text x="0" y="10">Revenue<|text><text x="150" y="15">0|v|s|on<|text> <xs|:for-eech se|ect="se|es|d|v|s|on"> <xs|:ver|eb|e neme="pos" se|ect="(pos|t|on()*40)-30"|> <!-- the ber's x pos|t|on --> <xs|:ver|eb|e neme="he|ght" se|ect="revenue*10"|> <!-- the ber's he|ght --> <rect x="{$pos}" y="{150-$he|ght}" w|dth="20" he|ght="{$he|ght}"|> <text x="{$pos}" y="15"><xs|:ve|ue-of se|ect="g|d"|><|text> <text x="{$pos}" y="{145-$he|ght}"><xs|:ve|ue-of se|ect="revenue"|><|text> <|xs|:for-eech> <|g><|svg> <|xs|:temp|ete><|xs|:sty|esheet> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 80 Le rsultat de la transformation vers HTML <svg w|dth="3|n" he|ght="3|n xm|ns="http:||www.w3.org|6reph|cs|8v6|svg-19990412.dtd"> <g sty|e="stroke: #000000"> <||ne x1="0" x2="150" y1="150" y2="150"|> <||ne x1="0" x2="0" y1="0" y2="150"|> <text x="0" y="10">Revenue<|text> <text x="150" y="15">0|v|s|on<|text> <rect x="10" y="50" w|dth="20" he|ght="100"|> <text x="10" y="15">North<|text> <text x="10" y="45">10<|text> <rect x="50" y="110" w|dth="20" he|ght="40"|> <text x="50" y="15">8outh<|text> <text x="50" y="105">4<|text> <rect x="90" y="90" w|dth="20" he|ght="0"|> <text x="90" y="15">west<|text> <text x="90" y="85"><|text> <|g> <|svg> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 81 Un exemple de document XML <?xm| vers|on="1.0" encod|ng="UTF-8" ?> <!006TYPE teb|e [ <!ELEHENT teb|e ((teb|e[row)*)> <!ELEHENT row ((teb|e[co|)+)> <!ELEHENT co| (#P60ATA)> <!ATTL|8T row[co| neme 60ATA #RE0U|RE0> }> <?xm|-sty|esheet type="text|xs|" href="teb|e2htm|.xs|"?> <teb|e> <row> <co| neme="d|v|s|on">Nord<|co|><co| neme="revenue">10<|co|><|row> <row> <co| neme="d|v|s|on">8ud<|co|><co| neme="revenue">7<|co|><|row> <row> <co| neme="d|v|s|on">Est0uest<|co|> <teb|e> <row neme="1999"> <co| neme="revenue"><|co|><|row> <row neme="2000"> ><co| neme="revenue">9<|co|><|row> <|teb|e> <|row> <|teb|e> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 82 Structure de <xsl:stylesheet> ILe document XSLT doit tre bien form l lment racine est xs|:sty|esheet nom de domaine seul xsl: <xs|:sty|esheet xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform"> . <|xs|:sty|esheet> avec d autres noms de domaine (ici par dfaut HTML) <xs|:sty|esheet xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform" xm|ns="http:||www.w3.org|TR|RE6-htm|40" resu|t-ns=""> . <|xs|:sty|esheet> IRemarque pour IE5.0 Lespace de nommage est xm|ns:xs|="http:||www.w3.org|TR|w0-xs|" 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 83 Les lments de <xsl:stylesheet> I <xsl:template match=""></xsl:template> rgle de transformation I <xsl:import href=""/> importe des feuilles de style XSL I <xsl:include href=""/> inclut des lments XSL dans la feuille de style XSL I <xsl:output method="method"/> dfinit le format de la sortie. methoa peut tre xml, html, text I <xsl:macro name="">...</xsl:macro > dfinit une macro-instruction (groupe d lments rutilisables) 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 84 Rgles de transformation explicites ou Template Rules <xsl:template> I Proprit match (REQUIRED) la rgle ne s applique qu aux lments vrifiant le pattern dfini par la valeur Exemples <xs|:temp|ete metch="|"> <xs|:temp|ete metch="teb|e"> <xs|:temp|ete metch="teb|e|comment()"> <xs|:temp|ete metch="|teb|e"> <xs|:temp|ete metch="teb|e[not(row)}"> <xs|:temp|ete metch="row|co|"> <xs|:temp|ete metch= "teb|e|*|co|"> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 85 Elments des rgles de transformation <xsl:templatematch="XX"> I<xsl:apply-templates select="YY"> applique les templates aux fils du nuds courant, restreint au pattern dfinit par la proprit select I<xsl:value-of select="YY"> donne la valeur du fils vrifiant le pattern dfinit par la proprit select I{YY} idem mais permet d insrer la valeur dans les balises des lments de sortie <xs|:temp|ete neme="L|NK"> <A hREF="{URL}"><xs|:ve|ue-of se|ect="8|TE"><|A> <|xs|:temp|ete> <L|NK 8|TE="w36" URL="http:||www.w3.org"|> est trensform <A hREF="http:||www.w3.org"|>w36<|A> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 86 Elments des rgles de transformation <xsl:templatematch="XX"> Ixsl:element : Insertion d lment insre un lment dans la sortie dont le nom est une valeur de l entre <xs|:temp|ete metch="co|"> <xs|:e|ement neme="{gneme}"><xs|:ve|ue-of se|ect="text()"|><|xs|:e|ement> <|xs|:temp|ete> <60L NAHE="8|te"|>w36<|60L> est trensform <8|TE>w36<|8|TE> Ixsl:attribut : Insertion d un attribut insre un lment dans la sortie dont le nom est une valeur de l entre <xs|:temp|ete metch="L|NK"> <A> <xs|:ettr|bute neme="hREF"><xs|:ve|ue-of se|ect="gURL"|><|xs|:ettr|bute> <xs|:ve|ue-of se|ect="8|TE"|> <|A> <|xs|:temp|ete> <L|NK 8|TE="w36" URL="http:||www.w3.org"|> est trensform <A hREF="http:||www.w3.org"|>w36<|A> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 87 Elments des rgles de transformation <xsl:templatematch="XX"> Ixsl:attribut-set : Insertion d un ensemble d attributs <xs|:ettr|bute-set neme="fontett"> <xs|:ettr|bute neme="font-fem||y">T|mes<|xs|:ettr|bute> <xs|:ettr|bute neme="font-s|ze">12pt<|xs|:ettr|bute> <|xs|: ettr|bute-set> <xs|:ettr|bute-set neme="pedd|ngett"> <xs|:ettr|bute neme="font-fem||y">1pt<|xs|:ettr|bute> <|xs|: ettr|bute-set> <xs|:temp|ete metch="60L"> <T0 xs|:use-ettr|bute-sets="fontett pedd|ngett"><xs|:ve|ue-of se|ect="."|><|T0> <|xs|:temp|ete> Ainsi <60L NAHE="8|te"|>w36<|60L> est trensform en <T0 font-fem||y="T|mes" font-fem||y="12pt" ce||-pedd|ng="1pt" >w36<|T0> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 88 Elments des rgles de transformation <xsl:templatematch="XX"> I<xsl:copy> copie le nud source dans la sortie <xs|:temp|ete metch="row"> <xs|:copy><b><xs|:ve|ue-of se|ect="."|><|b><|xs|:copy> <|xs|:temp|ete> <xs|:temp|ete metch="co|"><xs|:copy|><|xs|:temp|ete> I<xsl:for-each> parcourt les nuds I<xsl:choose> <xsl:when> <xsl:otherwise> I<xsl:if test=...> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 89 Elments des rgles de transformation <xsl:templatematch="XX"> I<xsl:sort> Tri des nuds <xs|:temp|ete metch="teb|e"> <teb|e> <xs|:epp|y-temp|etes> <xs|:sort se|ect="row|co|[neme='|0'}" order="descend|ng" dete-type="number" |> <|xs|:epp|y-temp|etes> <|teb|e> <|xs|:temp|ete> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 90 Elments des rgles de transformation <xsl:templatematch="XX"> I<xsl:number ...> Numrotation des nuds Proprits : value, from, level, letter-value grouping-separator grouping-size <xs|:temp|ete metch="row"> <td> <xs|:number ve|ue="pos|t|on()" formet="|" |> <|td> <xs|:epp|y-temp|etes se|ect="co|"> <|xs|:temp|ete> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 91 Elments des rgles de transformation <xsl:templatematch="XX"> I<xsl: counter...> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 92 Dfinition de constantes <xsl:variable name="XX"> IPermet de dfinir des constantes <xs|:ver|eb|e neme="copyr|ght"> 6opyr|ght 1998-2000 0|d|er 00N8EZ <|xs|:ver|eb|e> <xs|:ver|eb|e neme="uvhc"> Un|vers|t de ve|enc|ennes et du he|neut-6embrs|s <|xs|:ver|eb|e> <xs|:temp|ete ...> <L06K 60PYR|6hT="{$copyr|ght}"> . <|L06K > <hR><xs|:ve|ue-of se|ect="$copyr|ght"|>, <xs|:ve|ue-of se|ect="$uvhc"|> <|xs|:temp|ete> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 93 Rgles de transformation implicites ou Default Template Rules I Liste des rgles implicites <xs|:temp|ete metch="*[|"><xs|:epp|y-temp|etes|><|xs|:temp|ete> Application des templates aux lments et ses descendants <xs|:temp|ete metch="text() [g*"><xs|:ve|ue-of se|ect="."|><|xs|:temp|ete> Copie les nuds texte dans le document rsultant <xs|:temp|ete metch="process|ng-|nstruct|on()[comment()"|> ne rien faire pour les instructions et les commentaires I Application Elles sont considres comme importes Exemple <?xm| vers|on="1.0"?> <xs|:sty|esheet vers|on="1.0" xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform"> <|xs|:sty|esheet> Elles sont ignores si une rgle qui concerne l lment est dfinie I Remarque: IE5.0 n a pas de rgles implicites : il faut les importer ou les ajouter 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 94 Rgles de transformation explicites ou Template Rules <xsl:template> I Proprit mode (IMPLIED) sert appliquer des rgles plusieurs fois un mme nud mais avec des sorties diffrentes(rgles diffrentes) I Exemple <xs|:temp|ete metch="006"> <xs|:epp|y-temp|etes mode="toc"|><hr|><xs|:epp|y-temp|etes mode="toc"|> <|xs|:temp|ete> <xs|:temp|ete metch="6hAPTER" mode="toc"> <e href="#{g|0}"><xs|:ve|ue-of se|ect="T|TLE"|><|e><br|> <|xs|:temp|ete> <xs|:temp|ete metch="6hAPTER" mode="body"> <h1 neme="{g|0}">{T|TLE}<|h1><xs|:epp|y-temp|etes mode="body"|> <|xs|:temp|ete> I Cration de la rgle implicite <xs|:temp|ete metch="*[|" mode="n"><xs|:epp|y-temp|etes mode="n"|><|xs|:temp|ete> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 95 Rgles Nommes ou Named Template Rules I Les rgles nommes peuvent tre utilises par d autres rgles. Elles peuvent avoir aussi des paramtres I Exemple (sans paramtre) <xs|:temp|ete neme="H|N|"> <font fece="T|mes, ser|f" co|or="b|ue" s|ze="2"> <xs|:ve|ue-of se|ect="."|><|font> <|xs|:temp|ete> <xs|:temp|ete metch="YY"> <xs|:ce||-temp|ete neme="H|N|"|> <|xs|:temp|ete> <xs|:temp|ete metch="XX"> <xs|:ce||-temp|ete neme="H|N|"|> <|xs|:temp|ete> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 96 Rgles Nommes ou Named Template Rules I Exemple (avec paramtre) <xs|:temp|ete neme="H|N|"> <xs|:perem neme="po||ce">T|mes<|xs|:perem> <!-- ve|eur per dfeut --> <font fece="{po||ce}, ser|f" co|or="b|ue" s|ze="2"> <xs|:ve|ue-of se|ect="."|><|font> <|xs|:temp|ete> <xs|:temp|ete metch="YY"> <xs|:ce||-temp|ete neme="H|N|"> <xs|:w|th-perem neme="f||e">he|vet|ce<|xs|:w|th-perem> <xs|:ce||-temp|ete> <|xs|:temp|ete> <xs|:temp|ete metch="XX"> <xs|:ce||-temp|ete neme="H|N|"|> <|xs|:temp|ete> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 97 Import et inclusion de feuilles de style IImport peut produire des conflits entre les rgles prcedence la dernire rgle importe donc (dfinie) <xs|:sty|esheet vers|on="1.0" xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform"> <xs|:|mport href="chert.xs|"|> <xs|:|mport href="teb|e.xs|"|> <!-- other ch||d e|ements fo||ow --> <|xs|:sty|esheet> IInclusion remplace les rgles (mme match) de la feuille par ceux de la feuille incluse 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 98 Feuille de style niche I La feuille de style XSL est directement niche dans le document XML <?xm| vers|on="1.0"?> <?xm|-sty|esheet type="text|xm|" href="#|d(mysty|e)"?> <TALE> <xs|:sty|esheet vers|on="1.0" xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform" |d="mysty|e"> <xs|:temp|ete metch="|"><htm|> <xs|:epp|y-temp|etes|> <|htm|> <|xs|:temp|ete> <xs|:temp|ete metch="TALE"><teb|e><xs|:epp|y-temp|etes|> <teb|e><|xs|:temp|ete> . <xs|:temp|ete metch="xs|:sty|esheet"|> <|xs|:sty|esheet> <R0w><60L NAHE="Product">6offee<|60L><60L NAHE="Pr|ce">2.5<|60L><|R0w> <R0w><60L NAHE="Product">Tee<|60L><60L NAHE="Pr|ce">1.5<|60L><|R0w> <|TALE> QDIILFKHSDVODIHXLOOHGHVW\OHHWVHVILOV 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 99 Appel de script depuis une feuille XSLT I Appel de fonctions (externes) par le transformateur Indpendance du langage (JavaScript, Java, TCL, ) Sur XALAN I Exemple <?xm| vers|on="1.0"?> <doc> <foo f||e="foo.out"> Test|ng Red|rect extens|on: <ber>A foo sube|ement text node<|ber> <|foo> <me|n>Everyth|ng e|se<|me|n> <|doc> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 100 Appel de script depuis une feuille XSLT <xs|:sty|esheet xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform" vers|on="1.0" xm|ns:|xs|t="http:||xm|.epeche.org|xs|t" xm|ns:red|rect="org.epeche.xe|en.xs|t.extens|ons.Red|rect" extens|on-e|ement-pref|xes="red|rect"> <xs|:temp|ete metch="|"> <stenderd-out>8tenderd output:<xs|:epp|y-temp|etes|><|stenderd-out> <|xs|:temp|ete> <xs|:temp|ete metch="me|n"> <me|n><xs|:epp|y-temp|etes|><|me|n> <|xs|:temp|ete> <xs|:temp|ete metch="|doc|foo"> <red|rect:wr|te se|ect="gf||e"> <foo-out><xs|:epp|y-temp|etes|><|foo-out> <|red|rect:wr|te> <|xs|:temp|ete> <xs|:temp|ete metch="ber"> <foober-out><xs|:epp|y-temp|etes|><|foober-out> <|xs|:temp|ete> <|xs|:sty|esheet> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 101 Appel de script depuis une feuille XSLT ISortie sur la sortie standard <?xm| vers|on="1.0" encod|ng="UTF-8"?> <stenderd-out> 8tenderd output: <me|n>Everyth|ng e|se.<|me|n> <stenderd-out> ISortie sur le fichier foo.out <?xm| vers|on="1.0" encod|ng="UTF-8"?> <foo-out>Test|ng Red|rect extens|on: <foober-out>foo sube|ement text node<|foober-out> <|foo-out> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 102 Les transformateurs XSLT I Sur le client (MS IE5.0) Le navigateur rcupre .xml et le .xsl et le transforme la vole I Sur le serveur Web (Apache/XALAN) La servlet transforme la vole un document .xml avec une feuille .xsl : le navigateur reoit et visualise la transformation. I Standalone (XT, XALAN) la tranformation est faite par scripting (Shell ou tche ANT) I Evolution : Apache Cocoon 2 Association et application automatique des feuilles XSLT en fonction de l extension demande par le browser (.svg, .htm|, .wm|) |pub|book1.xm| + book.xm|2wm|.xs| => |pub|book1.wm| |pub|book1.xm| + book.xm|2htm|.xs| => |pub|book1.htm| 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 108 Transformation XSLT et Service Web (i) 8erv|et J8P A8P 30L 00L J086 0086 060H JRH/ //0P X8L Trensformer 688 Formeter hTHL 4.0 0hTHL h77P Cet/Pcst Request XHL h7HL 3VC wHL, ... h7HL rowser 8|de 8erver 8|de XPeth 30L 00L Transformation XSL 0 R, 0R, 00 EJ Ent|ty een ese XHL 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 109 Transformation XSLT et Service Web (ii) 8erv|et J8P A8P X8L Trensformer wAP 6etewey wHL wAP Cet Request XHL wHL 7ext wHL 8ineire rowser 8|de 8erver 8|de 0 R, 0R, 00 EJ Ent|ty een 30L 00L J086 0086 060H JRH/ //0P ese XHL XPeth 30L 00L Proxy 8|de Transformation XSL 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 110 Transformation XSLT et Service Web (iii) 8erv|et X8L Trensformer 6||ent (Nev|geteur) P037 Request XHL rowser 8|de 8erver 8|de 0 R, 0R, 00 30L 00L J086 0086 XHL 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 111 XSL-FO Formatting Object IMotivation transformation d un document XML vers un document non-XML RTF. Wora. PostScript. PDF. LaTex. . ITransformateur FO Apache FOP (Formatting Object Processor) 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 112 FOP (xml.apache.org) I Formateur FO Renderer PDF (incluant images et vecteurs SVG) I Ligne de commande jeve org.epeche.fop.epps.6ommendL|ne order.fo order.pdf jeve org.epeche.fop.epps.Xe|en6ommendL|ne order.xm| order2fo.xs| order.pdf # |e feu|||e de sty|e order2fo.xs| est epp||qu sur order.xm| event |e formettege I Depuis une application Java, une servlet, une JSP . org.epeche.fop.epps.0r|ver dr|ver = new org.epeche.fop.epps.0r|ver(); dr|ver.setRenderer("org.epeche.fop.render.pdf.P0FRenderer", vers|on); dr|ver.eddE|ementHepp|ng("org.epeche.fop.fo.8tenderdE|ementHepp|ng"); dr|ver.eddE|ementHepp|ng("org.epeche.fop.svg.8v6E|ementHepp|ng"); dr|ver.setwr|ter(new Pr|ntwr|ter(new F||ewr|ter(ergs[1}))); dr|ver.bu||dF0Tree(perser, f||e|nput8ource(ergs[0})); dr|ver.formet(); dr|ver.render(); . 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 113 FOP (xml.apache.org) Exemple I <?xm| vers|on="1.0" encod|ng="utf-8"?> <fo:root xm|ns:fo="http:||www.w3.org|1999|X8L|Formet"> <!-- def|nes pege |eyout --> <fo:|eyout-mester-set> <!-- |eyout for the f|rst pege --> <fo:s|mp|e-pege-mester pege-mester-neme="f|rst" pege-he|ght="29.7cm" pege-w|dth="21cm" merg|n-top="1cm" merg|n-bottom="2cm" merg|n-|eft="2.5cm" merg|n-r|ght="2.5cm"> <fo:reg|on-before extent="3cm"|> <fo:reg|on-body merg|n-top="3cm"|> <fo:reg|on-efter extent="1.5cm"|> <|fo:s|mp|e-pege-mester> <!-- |eyout for the other peges --> <fo:s|mp|e-pege-mester pege-mester-neme="rest" he|ght="29.7cm" w|dth="21cm" merg|n-top="1cm" 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 114 XML et CSS IMotivation Visualiser un document XML sans passer par XSLT vers un format visualisable (XHTML1/HTML4) IPrincipe Le document utilise un style CSS <?xml:stylesheet type="text/css" href= "article.css"?> Les lments sont rendus visibles par les proprits display INSTRUMENT { display: inline } ARTICLE, HEADLINE, AUTHOR, PARA { display: block } puis positionns, formats, HEADLINE { font-size: 1.3em; font-style: italic } ARTICLE, HEADLINE, AUTHOR, PARA { margin: 0.5em } IVoir les recommandations sur les CSS du W3C 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 115 Exemple d utilisation des CSS pour un document XML article.css INSTRUMENT { display: inline } ARTICLE, HEADLINE, AUTHOR, PARA { display: block } HEADLINE { font-size: 1.3em } AUTHOR { font-style: italic } ARTICLE, HEADLINE, AUTHOR, PARA { margin: 0.5em } article.xml <?xml version="1.0"?> <?xml:stylesheet type="text/css" href= "article.css"?> <ARTICLE> <HEADLINE>Fredrick the Great meets Bach</HEADLINE> <AUTHOR>Johann Nikolaus Forkel</AUTHOR> <PARA> One evening, just as he was getting his <INSTRUMENT>flute</INSTRUMENT> ready and his musicians were assembled, an officer brought him a list of the strangers who had arrived. </PARA> </ARTICLE> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 116 API XML IAPI de construction de documents XML DOM IAPIs danalyse (parsing) de documents XML SAX DOM 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 117 DOM Document Object Model IAPI Objet pour manipuler un document XML depuis un langage de programmation Java, JavaScript, Jscript, ... INiveaux de DOM DOM Level 1 DOM Core : interfaces de base et leur applications aux documents XML DOM HTML : interfaces applicables aux documents HTML DOM Level 2 DOM CSS : feuilles de style DOM Events : Gestion des vnements DOMFilters and Itrators : filtrage et traitement itratif DOM Range : isoler des fragments de documents pour traitement 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 118 DOM Level 1 IInterfaces de DOM Core (org.w3c.dom) Document, DocumentFragment, Node, CharacterData, Attr, Element, Text, Comment, CDATASection, DocumentType, Notation, Entity, EntityReference, ProcessingInstruction + NodeList, NamedNodeMap IInterfaces de DOM HTML 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 119 Parseurs XML I Parseur et Parseur/Validateur analyse le document XML vrifie la validit du document en fonction de sa DTD ou du XML Schema I API de Parseurs SAX et DOM SAX (Simple API for XML) orient vnement au cours de l analyse, le parseur appelle des fonctions de callback quand il rencontre le dbut/fin du document et des lments DOM (Document Object Model) orient arbre d objets le parseur construit en mmoire un arbre d objets (org.w3c.dom) reprsentant les lments I Langages C, C++, Perl, Java, VB, C#, OCAML, PHP, 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 120 Comparaison SAX et DOM I Avantages SAX le traitement du document par le programme se fait en cours d analyse (efficacit) seuls les lments pertinents sont traits I Inconvnients SAX criture plus complexe des fonctions de callback pour traiter des structures imbriques I Inconvnients DOM construction d un arbre en mmoire multitude de petits objets (efficacit des new et du GC en Java) trs grand documents tous les lments sont reprsents le traitement du document par le programme se fait aprs l analyse I Avantages DOM navigation dans un arbre d lments 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 121 L API Java pour XML I2 API : SAX et DOM Java API for XML Parsing (JAXP) inclut dans J2SE IPackages org.xml.sax, org.w3c.dom IParseurs (et Validateurs) Java J2SE SUN JAXP, IBM xml4j, Apache Xerces, James Clark XP, Oracle3xml, MicroSoft, ... Java J2ME pour lembarqu NanoXML, TinyXML, kXML, Parseur allg (pas de validation, pas dentit, ) 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 122 L API SAX (Simple API for XML) IPrincipe Le parseur analyse le flot de caractres du document et appelle des mthodes dites de callback lors qu il rencontre les balises de dbut et de fin du document et des lments Perseur 8AX (SAXParser) .xm| 6|esse de ce||beck (extends HandlerBase) startDocument(...) startElement(...) endElement(...) endDocument(...) SAXParser Factory 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 123 Le parseur et les Handler I javax.xml.parser.SAXParserFactory Crer un instance de org.xml.sax.Parser I org.xml.sax.Parser Linterface qui implmente un parseur validant. I org.xml.sax.HandlerBase Implmente les 4 interfaces suivantes org.xml.sax.DocumentHandler Interface qui dfinit les mthodes startDocument, endDocument, startElement, endElement. org.xml.sax.ErrorHandler Interface qui dfinit les mthodes error, fatalError, warning qui sont invoqus en cas derreur. org.xml.sax.DTDHandler Interface qui dfinit les mthodes pour lanalyse de la DTD. org.xml.sax.EntityResolver 12/11/2003 D i d i e r
X M L 125 Exemple SAX Affichage d un document pub||c vo|d cherecters( cher[} ch, |nt stert, |nt |ength ) throws 8AXExcept|on { 8ystem.out.pr|nt( "8AX Event: 6hARA6TER8[ " ); try { 0utput8treemwr|ter outw = new 0utput8treemwr|ter(8ystem.out); outw.wr|te( ch, stert,|ength ); outw.f|ush(); } cetch (Except|on e) { e.pr|nt8teckTrece(); } 8ystem.out.pr|nt|n( " }" ); } pub||c vo|d set0ocumentLocetor (Locetor |) throws 8AXExcept|on { outw.wr|te ("L06AT0R n 8Y8 |0: " + |.get8ystem|d() ); out.f|ush (); } pub||c vo|d process|ng|nstruct|on (8tr|ng terget, 8tr|ng dete) throws 8AXExcept|on { outw.wr|te("PR06E88: <?"+terget+" "+dete+"?>"); } 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 126 Exemple SAX Affichage d un document pub||c stet|c vo|d me|n (8tr|ng ergv [}) { |f (ergv.|ength != 1) { 8ystem.err.pr|nt|n ("Usege: cmd f||eneme"); 8ystem.ex|t (1); } try { 8AXPerserFectory fectory = 8AXPerserFectory.new|nstence() || fectory.setve||det|ng(true); || set perser ve||det|ng out = new 0utput8treemwr|ter (8ystem.out, "UTF8"); || Perse the |nput 8AXPerser sexPerser = fectory.new8AXPerser(); sexPerser.perse( new F||e(ergv [0}), new 8exEcho() ); } . 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 127 Exemple SAX Rcupration des exceptions } cetch (8AXPerseExcept|on spe) { || Error genereted by the perser 8ystem.out.pr|nt|n ("n** Pers|ng error" + ", ||ne " + spe.getL|neNumber () + ", ur| " + spe.get8ystem|d ()); 8ystem.out.pr|nt|n(" " + spe.getHessege() ); } cetch (8AXExcept|on sxe) { || Error genereted by th|s epp||cet|on || (or e perser-|n|t|e||zet|on error) Except|on x = sxe; |f (sxe.getExcept|on() != nu||) x = sxe.getExcept|on(). x.pr|nt8teckTrece(); } cetch (Throweb|e t) { t.pr|nt8teckTrece (); } 8ystem.ex|t (0); } 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 129 L API DOM (Document Object Model) I Principe analyse et valide un document XML et construire un objet DOM l objet DOM peut tre ensuite traiter par le programme Parcours en largeur et profondeur de larbre Manipulation de noeud replacement, ajout de nud, clonage, changement de valeur Sortie sur un OutputStream, srialisation, I Classes et interfaces DocumentBuilderFactory DocumentBuilder Document I Remarque Limplantation de Sun utilise simplement le parser SAX avec un DocumentHandler qui construit larbre DOM 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 130 Construction dun objet DOM partir dune analyse |mport org.xm|.dom.tree.Xm|0ocument; 0ocumentu||derFectory fectory = 0ocumentu||derFectory.new|nstence(); fectory.setNemespeceAwere(true); fectory.setve||det|ng(true); 8tr|ng |ocet|on = "http:||myserver|mycontent.xm|"; try { 0ocumentu||der bu||der = fectory.new0ocumentu||der(); 0ocument document = bu||der.perse(|ocet|on); Xm|0ocument xdoc=(Xm|0ocument)document; || nev|get|on de | 'erbre 0ocument || ou xdoc.wr|te(8ystem.out); } cetch (8AXExcept|on se) { . } 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 131 Construction dun arbre DOM 0ocumentu||derFectory dbf = 0ocumentu||derFectory.new|nstence (); 0ocumentu||der db = dbf.new0ocumentu||der (); 0ocument doc = db.new0ocument (); I Cration et ajout dun lment E|ement root = doc.creeteE|ement ("htm|"); doc.eppend6h||d (root); root.eppend6h||d (doc.creeteE|ement ("heed")); root.eppend6h||d (doc.creeteTextNode ("n some dete |s textn ")); root.eppend6h||d (doc.creeteE|ement ("body")); Text text = doc.creeteTextNode ("n"); root.|nsertefore (text, root.getF|rst6h||d ()); text = doc.creeteTextNode ("n"); root.eppend6h||d (text); I Cration et modification dun attribut Attr ettr = doc.creeteAttr|bute ("ettr1"); ettr.setNodeve|ue ("ve|ue of ettr|bute 1"); root.getAttr|butes().setNemed|tem (ettr); root.setAttr|bute("ettr2", "enother str|ng"); 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 132 Manipulation dun objet DOM I Parcours (rcursif) de larbre stet|c vo|d trece(Node node, Pr|nt8treem out, |nt |ndent) { for(|nt |=0; |<|ndent;|++) out.pr|nt(" "); out.pr|nt|n(node.getNodeNeme()+ " ("+ node.getNodeType() + ")"); |f(node.hes6h||dNodes()) { NodeL|st n|=node.get6h||dNodes(); for(|nt |=0; |<n|.getLength(); |++) trece(n|.|tem(|),out, |ndent+1); } } . 0ocument doc = db.new0ocument (); . trece(doc, 8ystem.out, 0); I Recherche de nud dans larbre NodeL|st n|=doc.getE|ementsyTegNeme("REHARK"); for(|nt |=0; |<n|.getLength(); |++) trece(n|.|tem(|),8ystem.out, |ndent+1); 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 133 DOM et les langages de scripting I Exemple de document <||st|ngs> <egent> <neme>J||| 8m|th Ree| Estete<|neme><phone>123-45-7890<|phone> <egent> <||st|ng> <summery>eeut|fu| 3-R penthouse<|summery> <eree>west s|de<|eree> <pr|ce>$10 000<|pr|ce> <bedrooms>3<|bedrooms> <bethrooms>2<|bethrooms> <|nformet|on>Exce||ent cond|t|on. very pr|vete end fec|ng south w|th mep|e herdwood f|oors end veu|ted ce|||ngs. 2 fu|| bethrooms, 3 bedrooms (mester hes we|k-|n c|oset end ensu|te), cerem|c t||e, ges f|rep|ece, e|erm system, 2 be|con|es, huge storege + |ocker, 2 perk|ng.<||nformet|on> <|||st|ng> <||st|ng> <summery>Pr|ced to se||. 0on't we|t.<|summery> <eree>Eest s|de<|eree> <pr|ce>$170 000<|pr|ce> <bedrooms>1<|bedrooms> <bethrooms>2<|bethrooms> <|nformet|on>1 & den. 917 s.f. for $170 000. how cen you go wrong. Lerge ||v|ng end d|n|ng eree, 2 beths, we|k through c|oset to ensu|te, custom merb|e end |te||en pedeste| s|nk |n powder room. 6reet buy. Pr|ced to se||.<||nformet|on> <|||st|ng> <|||st|ngs> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 134 DOM et les langages de scripting I Script ECMA ver egent=document.getE|ementsyTegNeme("egent")[0}; ver egentneme=egent.f|rst6h||d.f|rst6h||d.dete; ver egentphone=egent.f|rst6h||d.next8|b||ng.f|rst6h||d.dete; ver e|=document.documentE|ement.f|rst6h||d; wh||e (e|) { |f (e|.nodeType != 1) { e|=e|.next8|b||ng; } dump(e|.tegNeme + "n"); |f (e|.tegNeme == "L|8T|N6") { ver eree=e|.getE|ementsyTegNeme("eree")[0}.f|rst6h||d.dete; ver pr|ce=e|.getE|ementsyTegNeme("pr|ce")[0}.f|rst6h||d.dete; ver br=e|.getE|ementsyTegNeme("bedrooms")[0}.f|rst6h||d.dete; ver beth=e|.getE|ementsyTegNeme("bethrooms")[0}.f|rst6h||d.dete; ver |nfo=e|.getE|ementsyTegNeme("|nformet|on")[0}.f|rst6h||d.dete; |f (eree=="Eest s|de") { || put the ver|ous p|eces |nto the detebese for the Eest s|de ||st|ngs, || |nc|ud|ng the egent |nformet|on } e|se |f (eree=="west s|de") { || put the ver|ous p|eces |nto the detebese for the west s|de ||st|ngs, || |nc|ud|ng the egent |nformet|on } || e|se put |n some error messege ebout the eree not be|ng found } e|=e|.next8|b||ng; } 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 135 XML Binding IMotivation Faire correspondre des lments avec des objets dans le programme DOM typ, Mise en correspondance, IJava JAXB, Castor, IVoir cours XML Binding 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 136 Quelles Applications XML RDF RSS SVG XHTML XForm WML BPML ebXML RosettaNet BTP, WST OAGIS xCBL B2C EAI B2B WSDL SOAP UDDI Web Services BPML CDF cXML XUL JXTA P2P SMIL PICS P3P 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 138 RDF Ressource Definition Framework IObjectifs: associer des proprits descriptives aux ressources (uri) du Web IExemple ISchmas RDF PICS, DC (Dublin Core), Sitemap, P3P 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 139 RDF Ressource Definition Framework I Objectifs : dcrire plus prcisment les ressources disponibles sur le web, adaptation au contexte XML, support pour ontologies, thesaurus... I Principe Un document est dcrit l'aide d'une 5')GHVFULSWLRQ utilisant des lments contenus dans un ou plusieurs 5') VFKHPD I Limitations Manque de stabilit normative (en complment de l'volution des autres normes) au niveau des outils, au niveau des usages I Bibliographie site du W3C http://www.w3.org/RDF/ An Idiots Guide to the Resource Description Framework (Renato Iannella) http://archive.dstc.edu.au/RDU/reports/RDF-Idiot/ 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 140 RDF Ressource Definition Framework I Exemple <? xm| vers|on="1.0" ?> <R0F xm|ns = "http:||w3.org|TR|1999|PR-rdf-syntex-19990105#" xm|ns:06 = "http:||pur|.org|06#" > <0escr|pt|on ebout = "http:||dstc.com.eu|report.htm|" > <06:T|t|e> The Future of Hetedete <|06:T|t|e> <06:6reetor> Jecky 6ryste| <|06:6reetor> <06:0ete> 1998-01-01 <|06:0ete> <06:8ubject> Hetedete, R0F, 0ub||n 6ore <|06:8ubject> <|0escr|pt|on> <|R0F> I Explication L'objet : http:||dstc.com.eu|report.htm| est dcrit dans l'lment XML/RDF <Description about= ...> ... </Description> par les proprits : 7LWOH &UHDWRU'DWH 6XEMHFW dfinies dans le domaine nominal : xmlns:DC="http://purl.org/DC#" 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 141 RDF Schema I Objectif : description des proprits RDF I Exemple <?xm| vers|on='1.0'?> <rdf:R0F xm|ns:rdf="http:||www.w3.org|1999|02|22-rdf-syntex-ns#" xm|ns:rdfs="http:||www.w3.org|TR|1999|PR-rdf-scheme-19990303#" xm|ns:dc=""> <rdf:0escr|pt|on ebout = ""> <dc:T|t|e> The 0ub||n 6ore E|ement 8et <|dc:T|t|e> <dc:0ete> 1995-03-01 <|dc:0ete> . <|rdf:0escr|pt|on> <rdf:0escr|pt|on |0="T|t|e"> <rdf:type rdf:resource ="http:||www.w3.org|TR|PR-rdf-syntex-ns#Property"|> <rdfs:|ebe|>T|t|e<|rdfs:|ebe|> <rdfs:comment>The neme g|ven to the resource.<|rdfs:comment> <rdfs:|s0ef|nedy rdf:resource = ""|> <|rdf:0escr|pt|on> ... <|rdf:R0F> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 142 RDF Schema IExplications xmlns:rdfs introduit l'espace de noms servant dcrire le schma RDF. Ce document commence par sa description en RDF Puis il donne les dfinitions relatives aux 15 lments (dfinis comme proprits - Property - RDF 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 143 DCD Document Content Description IDescription XML d une DTD http://www.w3.org/TR/NOTE-dcd IExemple 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 144 XHTML I Appliquer l extensibilit de XML HTML4.01 ajout de nouveaux lments, ... I3 tapes <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "DTD/xhtml1-frameset.dtd"> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 145 XHTML Les diffrences avec HTML4 I Document correct pas de chvauchement <p>|es |ments<em>s 'embo|tent<|em><|p> au lieu de <p>|es be||ses<em>se cheveuchent pes<|p><|em> lments vides <br|><hr|> au lieu de <br><hr> qui est INCORRECT valeurs attributs <teb co|="3"> au lieu de <teb co|=3> qui est INCORRECT I Style et Script <scr|pt> <![60ATA[ ... unesceped scr|pt content ... }}> <|scr|pt> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 146 XHTML - Exemple I Document XML utilisant des lments du domaine de noms XHTML <?xm| vers|on="1.0" encod|ng="UTF-8"?> <!-- |n|t|e||y, the defeu|t nemespece |s "books" --> <book xm|ns='urn:|oc.gov:books' xm|ns:|sbn='urn:|8N:0-395-3341-' xm|:|eng="en" |eng="en"> <t|t|e>6heeper by the 0ozen<|t|t|e> <|sbn:number>158491379<||sbn:number> <notes> <!-- meke hTHL the defeu|t nemespece for e hypertext commentery --> <p xm|ns='http:||www.w3.org|1999|xhtm|'> Th|s |s e|so eve||eb|e <e href="http:||www.w3.org|">on||ne<|e>. <|p> <|notes> <|book> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 147 XHTML - Exemple I Document XHTML utilisant la recommandation MathML <htm| xm|ns="http:||www.w3.org|1999|xhtm|" xm|:|eng="en" |eng="en"> <heed><t|t|e>A Heth Exemp|e<|t|t|e><|heed> <body> <p>The fo||ow|ng |s HethHL merkup:<|p> <meth xm|ns="http:||www.w3.org|1998|Heth|HethHL"> <epp|y> <|og|> <|ogbese> <cn> 3 <|cn> <||ogbese> <c|> x <|c|> <|epp|y> <|meth> <|body><|htm|> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 148 XUL (XML based User Interface Language) http://www.xulplanet.com IWidget des GUI (Interface graphique) Support par NS Communicator 6 et Mozilla IExemple 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 149 XForm (W3C) IDfinition abstraite des formulaires Limitation du <FORM> HTML Ne dfinit lapparence GUI Functionnalits : Dpendances entre les entres, IExemple 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 151 Les Outils I Editeurs XML http://www.alphaWorks.ibm.com/tech/visualxmltools , ... I Browsers XML W3C Amaya, MS IE5, Mozilla, Opera I Parseurs XML/DOM MS, Java API for XML Parsing (JAXP). Parsers XML pour lembarqu (NanoXML, TinyXML, kXML) I Compilateurs XML/DOM Enhydra I Transformateurs XSL MS, XT, Xalan (xml.apache.org) I Serveurs Web http://technet.oracle.com/tech/xml/xsql_servlet/ servlet qui interroge une BD en SQL et formate le rsultat en XML I SGBD XML Oracle 8i, Ardent, Software AG TAMINO, ObjectStore, ... 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 153 Apache XML Project (http://xml.apache.com) IXerces - XML parsers in Java, C++ (with Perl and COM bindings) IXalan - XSLT stylesheet processors, in Java and C++ ICocoon - XML-based web publishing, in Java IFOP - XSL formatting objects, in Java IXang - Rapid development of dynamic server pages, in Java ISOAP - Simple Object Access Protocol 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 154 XSP I Voir xml.apache.org 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 155 Scripting Serveur et et XML/DOM IInconvnients des solutions prcdentes Script gnrant du HTML gnration par programmation ( la main ) Script nich dans un document HTML Utilisation d outils auteur pour crer les pages, OUI ! MAIS l insertion de scripts empche de retravailler les pages IAlternative Utilisation du modle DOM dans les scripts www.enhydra.org 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 156 Scripting Serveur et et XML/DOM Principe (i) I Principe : le script ne manipule que des objets DOM id=1 Base de Donnes id=1 XMLC SQL toString() HTML, XML (ID, CLASS) HTML, XML statique + gnr .html Objet DOM/XML Objet DOM/XML Assemblage des objets DOM par le script DTD HTML S t a t i q u e D y n a m i q u e .html 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 157 Scripting Serveur et et XML/DOM Cycle de Dveloppement (i) I 1) Conception de document HTML avec des outils auteur Linfographiste concoit le document avec une touche graphique et des animations standards (bannire, boutons anims, menu, ) Certaines zones du document seront gnrs la vole par un script. Ces zones sont repres par des attributs ID ou CLASS. Le document pourra tre modifi ultrieurement (aprs 4) I 2) Compilation des pages HTML en objet Java DOM le document HTML est compil en une classe Java instanciant des objets DOM/XML ncessite parfois une mise en conformit (DTD/HTML4) du source HTML produit par les outils auteur packages org.w3c.dom et org.w3c.dom.html 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 158 Scripting Serveur et et XML/DOM Cycle de Dveloppement (ii) I 3) Dveloppement du script Le script (servlet) instance un objet DOM partir de la classe produit par le compilateur DOM. Cet objet est un arbre Les sous-arbres identifis (ID ou CLASS ) par l infographiste correspondent aux zones qui vont tre gnrs la vole. Le script modifie ou remplace ces sous-arbres partir de de sous-arbres gnrs partir de donnes retires du Systme d Information ( l excution). I 4) Requte Le script assemble les sous-arbre DOM gnrs avec l arbre DOM statique. Le script rpond la requte du client en retournant l arbre DOM srialis dans le cas d une rponse RMI mthode writeObject() une gnration texte de l arbre DOM dans le cas d une rponse HTTP mthode toString() 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 159 Environnement dexcution (Serveur Servlet, Serveur RMI, ) Scripting Serveur et et XML/DOM Cycle de Dveloppement (iii) HTML (ID, CLASS) Compillateur XML/DOM (XMLC, ) HTML conforme DTD HTML4.0 Mise en Conformit DTD HTML4.0 Base doc.html doc.html Outil Auteur (DreamWeaver, ) classe Java instanciant des objets DOM dochtml.java classe Java rpondant une requte doc.java dochtml.class doc.class Schema .ser vers un client RMI .html vers un browser Web c f d d e 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 160 XML dans les produits MicroSoft IObjets ActiveX "Microsoft.XMLDOM" "Microsoft.XMLHTTP"
12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 161 XML dans IE5.x HTTP POST dun document XML <hTHL><00Y> <86R|PT> || run on|y w|th H8 |E 5.x funct|on PostXm|0oc (ect|onur|,xm|doc) { ver xm|http = new Act|veX0bject ("H|crosoft.XHLhTTP"); xm|http.open("P08T", ect|onur|,fe|se); xm|http.send(xm|doc); return xm|http.responseXHL; } funct|on subm|t|nfo(){ ver xm|doc = new Act|veX0bject ("H|crosoft.XHL00H"); xm|doc.esync = fe|se; xm|doc.|oedXHL(xm|docText.ve|ue); ver response = PostXm|0oc("|serv|et|postxm|doc", xm|doc); e|ert(response.documentE|ement.xm|); } <|86R|PT> . 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 162 XML dans IE5.x HTTP POST dun document XML . <b>Type |n en XHL 0ocument to Post:<b><br> <TEXTAREA rows="12" co|s="70" NAHE="xm|docText"> <s||deshow> <s||de> <source>|mg|equebe|estpeu|.jpg<|source> <t|t|e>e|e 8e|nt Peu|<|t|t|e> <descr|pt|on> weterco|or of e|e 8e|nt Peu|, 0uebec, 6enede, August 1997. <|descr|pt|on> <|s||de> <|s||deshow> <|TEXTAREA> <P><|NPUT TYPE=button ve|ue="Post XHL 0ocument" onc||ck="subm|t|nfo()"> <|00Y> <|hTHL> 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 163 Binarisateur XML IReprsentation binaire (bytecode) de documents XML IMotivation Version plus compacte de documents XML pour les transferts et lempreinte mmoire (informatique embarque) IUtilisations WML, MPEG7 (iTV), 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 164 Bibliographie I Voir Cours BD et XML , Scripting Serveur , HTML I Sites http://www.w3c.org/XML http://java.sun.com/xml/ Java API for XML Parsing 1.0 (JAXP). http://xml.apache.org http://www.xml.com http://www.jclark.com/xml/xt.html http://www.oasis-open.org/cover/xml.html http://www.xml101.com http://www.alphaworks.ibm.com http://www.xmlsoftware.com news://comp.text.xml 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 165 Bibliographie I Elliotte Rusty Harold , XML Bible , 1015 pages July 1999, IDG Books Worldwide; ISBN: 0764532367 la bible : il existe la version franaise (ISBN 2-7464-0070-7) I Brett McLaughlin "Java and XML", 1st Edition June 2000, ISBN 0-596-00016- 2, 498 pages, Edition OREILLY &ASSOCIATES I J.C. Bernadac, F. Knab, XML, Construire une Application , Ed. Eyrolles, 1999, ISBN 2-212-09081-1 assez complet et 2 tudes de cas compltes en environnement ASP et Servlet I Benot Marchal, XML by Example - 425 pages 1 edition, December 1999, Que Education & Training; ISBN: 0789722429 I Charles F. Goldfarb, "The XML Handbook", 2 nd edition, 1999, Ed Prentice Hall, ISBN 0-13-014714-1 I M. Floyd, Building Web Sites with XML , Ed Prentice Hall 1999, ISBN 0-13- 086601-6 I Michael Kay, "XSLT programmers Reference", 2000, Ed Wrox Press, ISBN I Ian Graham, "XHTML 1.0 language and design sourcebook", 2000, Ed Wiley 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 166 Bibliographie Andrew Patzer , "Programmation Java ct serveur : Servlets, JSP et EJB", Ed Eyrolles-Wrox, 2000, ISBN 1-861002-77-7 (sources des exemples sur www.wroxfrance.com) chapitre 14 dans le contexte serveur Web 12/11/2003 D i d i e r
D o n s e z ,
1 9 9 8 - 2 0 0 3 ,
X M L 167 Bibliographie IElliotte Rusty Harold, W. Scott Means, XML in a Nutshell, 2nd Edition, A Desktop Quick Reference , Ed Oreilly IHoward Katz, Don Chamberlin, Denise Draper, Mary Fernandez, Michael Kay, Jonathan Robie, Michael Rys, Jerome Simeon, Jim Tivy, Philip Wadler, XQuery from the Experts: A Guide to the W3C XML Query Language , Ed Addison- Wesley, Aout 2003, ISBN 0321180607, 512 pp