94
Axe Ingénierie des Systèmes d’Informations 6 octobre 2008 Initiation à XML Philippe BEAUNE [email protected]

Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

Axe Ingeacutenierie des Systegravemes drsquoInformations

6 octobre 2008

Initiation agrave XML

Philippe BEAUNEPhilippeBeauneemsefr

6 octobre 2008 Axe ISI2

Initiation agrave XML

emploi du temps une seacuteance de cours (aujourdhui)une seacuteance de TP (lundi 13 octobre matin)

appropriation par la pratique et la lecture

application dans les projets ISI et

6 octobre 2008 Axe ISI3

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI4

XML dougrave viens-tu

eXtensible Markup Language le W3C (recommandation XML 10 1998) XML est le petit-fils de GML (IBM 60s)

et le fils de SGML (80s ISO en 1986) Cest un meacuteta-langage un langage de balisage

(un peu comme HTML) un meacuteta-format de donneacutees de documents un mode structuration de linformation de la connaissance

6 octobre 2008 Axe ISI5

XML quest-ce que cest XML HTML ndash balises de preacutesentation

+ DTD deacutefinies par lutilisateur XML = SGML ndash complexiteacute orientation document

+ simpliciteacute orientation eacutechanges de donneacutees

XML =80 des fonctionnaliteacutes de SGML20 de la complexiteacute de SGML

SGML vs XML httpwwww3orgTRNOTE-sgml-xmlhtml

6 octobre 2008 Axe ISI6

The design goals for XML are1- XML shall be straightforwardly usable over the Internet2- XML shall support a wide variety of applications3- XML shall be compatible with SGML4- It shall be easy to write programs which process XML

documents5- The number of optional features in XML is to be kept to the

absolute minimum ideally zero6- XML documents should be human-legible and reasonably clear7- The XML design should be prepared quickly8- The design of XML shall be formal and concise9- XML documents shall be easy to create10-Terseness in XML markup is of minimal importance

6 octobre 2008 Axe ISI7

XML un exempleltpersonne sexe=Mgt

ltnomgtltnom_de_famillegt

Beauneltnom_de_famillegtltprenomgtPhilippeltprenomgt

ltnomgtlt-- ici cest un commentaire --gt

ltprofessiongt Informaticienltprofessiongt ltprofessiongt enseignantchercheur ltprofessiongt

ltpersonnegt

6 octobre 2008 Axe ISI8

XML les bases

personne nom prenom profession sont des eacuteleacutements sexe

est un attribut Un eacuteleacutement est deacutelimiteacute par une balise ouvrante

ltpersonnegt et une balise fermante ltpersonnegt

Entre ces 2 balises il y a le contenu des eacuteleacutements des donneacutees textuelles

Eacuteleacutement vide ltbalise_d_element_videgt

6 octobre 2008 Axe ISI9

XML les eacuteleacutements

XML est case-sensitive (contrairement agrave html) Les eacuteleacutements peuvent ecirctre emboiteacutes jamais

entrelaceacutes ltpersonnegt ltpersonnegt

ltimportantgt ltimportantgtmoi meme moi meme

ltpersonnegt ltimportantgtltimportantgt ltpersonnegt

bien formeacute

6 octobre 2008 Axe ISI10

XML arbre

personne

nom

prenomnom_de_famille

profession profession

Beaune Philippe Informaticien enseignant chercheur

sexe=M

eacuteleacutement racine

descendants

6 octobre 2008 Axe ISI11

XML contenus mixtesltbiographygt ltnamegtltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegtltnamegt was one of the first people to truly deserve the name ltemphasizegtcomputer scientistltemphasizegt Although his contributions to the field are too numerous to list his best-known are the eponymous ltemphasizegtTuring Testltemphasizegt and ltemphasizegtTuring Machineltemphasizegt

ltdefinitiongtThe lttermgtTuring Testlttermgt is to this day the standard test for determining whether a computer is truly intelligent This test has yet to be passed ltdefinitiongt

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memory Thus what is true for a Turing machine is true for all equivalent machines no matter how implemented ltdefinitiongt

ltnamegtltlast_namegtTuringltlast_namegtltnamegt was also an accomplished ltprofessiongtmathematicianltprofessiongt and ltprofessiongtcryptographerltprofessiongt His assistance was crucial in helping the Allies decode the German Enigma machine He committed suicide on ltdategtltmonthgtJuneltmonthgt ltdaygt7ltdaygt ltyeargt1954ltyeargtltdategt after being convicted of homosexuality and forced to take female hormone injectionsltbiographygt

6 octobre 2008 Axe ISI12

XML appel dentiteacutes Dans les donneacutees textuelles certains caractegraveres

sont interdits lt amp Ils sont remplaceacutes par des appels dentiteacutes amplt et ampamp

5 entiteacutes sont preacutedeacutefinies en XML amplt ampamp ampgt ampquot et ampapos

Exemple Powered by OampaposReilly Books Autres appels amp233

6 octobre 2008 Axe ISI13

XML CDATA Les sections CDATA peuvent se trouver agrave nimporte quel endroit

acceptable pour des donneacutees textuelles Elles sont employeacutees pour des blocs de texte qui seraient autrement

interpreacuteteacutes comme balisage Les sections CDATA commencent par ltCDATA[ et finissent par ]]gt

ltpgtYou can use a default ltcodegtxmlnsltcodegt attribute to avoidhaving to add the svg prefix to all your elementsltpgt lt[CDATA[ ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ]]gt

6 octobre 2008 Axe ISI14

XML instructions de traitement Les instructions de traitement permettent aux documents de contenir

des instructions destineacutees aux softs qui traiteront le document Les instructions de traitement commencent par lt et finissent par gt Juste apregraves le lt se trouve la cible (un nom XML) Par ex

ltrobots index=yes follow=nogtltphp mysql_connect(databaseuncedu clerk password) $result = mysql(HR SELECT LastName FirstName FROM Employees ORDER BY LastName FirstName) $i = 0 while ($i lt mysql_numrows ($result)) $fields = mysql_fetch_row($result) echo ltpersongt$fields[1] $fields[0] ltpersongtrn $i++ mysql_close( )gt

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 2: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI2

Initiation agrave XML

emploi du temps une seacuteance de cours (aujourdhui)une seacuteance de TP (lundi 13 octobre matin)

appropriation par la pratique et la lecture

application dans les projets ISI et

6 octobre 2008 Axe ISI3

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI4

XML dougrave viens-tu

eXtensible Markup Language le W3C (recommandation XML 10 1998) XML est le petit-fils de GML (IBM 60s)

et le fils de SGML (80s ISO en 1986) Cest un meacuteta-langage un langage de balisage

(un peu comme HTML) un meacuteta-format de donneacutees de documents un mode structuration de linformation de la connaissance

6 octobre 2008 Axe ISI5

XML quest-ce que cest XML HTML ndash balises de preacutesentation

+ DTD deacutefinies par lutilisateur XML = SGML ndash complexiteacute orientation document

+ simpliciteacute orientation eacutechanges de donneacutees

XML =80 des fonctionnaliteacutes de SGML20 de la complexiteacute de SGML

SGML vs XML httpwwww3orgTRNOTE-sgml-xmlhtml

6 octobre 2008 Axe ISI6

The design goals for XML are1- XML shall be straightforwardly usable over the Internet2- XML shall support a wide variety of applications3- XML shall be compatible with SGML4- It shall be easy to write programs which process XML

documents5- The number of optional features in XML is to be kept to the

absolute minimum ideally zero6- XML documents should be human-legible and reasonably clear7- The XML design should be prepared quickly8- The design of XML shall be formal and concise9- XML documents shall be easy to create10-Terseness in XML markup is of minimal importance

6 octobre 2008 Axe ISI7

XML un exempleltpersonne sexe=Mgt

ltnomgtltnom_de_famillegt

Beauneltnom_de_famillegtltprenomgtPhilippeltprenomgt

ltnomgtlt-- ici cest un commentaire --gt

ltprofessiongt Informaticienltprofessiongt ltprofessiongt enseignantchercheur ltprofessiongt

ltpersonnegt

6 octobre 2008 Axe ISI8

XML les bases

personne nom prenom profession sont des eacuteleacutements sexe

est un attribut Un eacuteleacutement est deacutelimiteacute par une balise ouvrante

ltpersonnegt et une balise fermante ltpersonnegt

Entre ces 2 balises il y a le contenu des eacuteleacutements des donneacutees textuelles

Eacuteleacutement vide ltbalise_d_element_videgt

6 octobre 2008 Axe ISI9

XML les eacuteleacutements

XML est case-sensitive (contrairement agrave html) Les eacuteleacutements peuvent ecirctre emboiteacutes jamais

entrelaceacutes ltpersonnegt ltpersonnegt

ltimportantgt ltimportantgtmoi meme moi meme

ltpersonnegt ltimportantgtltimportantgt ltpersonnegt

bien formeacute

6 octobre 2008 Axe ISI10

XML arbre

personne

nom

prenomnom_de_famille

profession profession

Beaune Philippe Informaticien enseignant chercheur

sexe=M

eacuteleacutement racine

descendants

6 octobre 2008 Axe ISI11

XML contenus mixtesltbiographygt ltnamegtltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegtltnamegt was one of the first people to truly deserve the name ltemphasizegtcomputer scientistltemphasizegt Although his contributions to the field are too numerous to list his best-known are the eponymous ltemphasizegtTuring Testltemphasizegt and ltemphasizegtTuring Machineltemphasizegt

ltdefinitiongtThe lttermgtTuring Testlttermgt is to this day the standard test for determining whether a computer is truly intelligent This test has yet to be passed ltdefinitiongt

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memory Thus what is true for a Turing machine is true for all equivalent machines no matter how implemented ltdefinitiongt

ltnamegtltlast_namegtTuringltlast_namegtltnamegt was also an accomplished ltprofessiongtmathematicianltprofessiongt and ltprofessiongtcryptographerltprofessiongt His assistance was crucial in helping the Allies decode the German Enigma machine He committed suicide on ltdategtltmonthgtJuneltmonthgt ltdaygt7ltdaygt ltyeargt1954ltyeargtltdategt after being convicted of homosexuality and forced to take female hormone injectionsltbiographygt

6 octobre 2008 Axe ISI12

XML appel dentiteacutes Dans les donneacutees textuelles certains caractegraveres

sont interdits lt amp Ils sont remplaceacutes par des appels dentiteacutes amplt et ampamp

5 entiteacutes sont preacutedeacutefinies en XML amplt ampamp ampgt ampquot et ampapos

Exemple Powered by OampaposReilly Books Autres appels amp233

6 octobre 2008 Axe ISI13

XML CDATA Les sections CDATA peuvent se trouver agrave nimporte quel endroit

acceptable pour des donneacutees textuelles Elles sont employeacutees pour des blocs de texte qui seraient autrement

interpreacuteteacutes comme balisage Les sections CDATA commencent par ltCDATA[ et finissent par ]]gt

ltpgtYou can use a default ltcodegtxmlnsltcodegt attribute to avoidhaving to add the svg prefix to all your elementsltpgt lt[CDATA[ ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ]]gt

6 octobre 2008 Axe ISI14

XML instructions de traitement Les instructions de traitement permettent aux documents de contenir

des instructions destineacutees aux softs qui traiteront le document Les instructions de traitement commencent par lt et finissent par gt Juste apregraves le lt se trouve la cible (un nom XML) Par ex

ltrobots index=yes follow=nogtltphp mysql_connect(databaseuncedu clerk password) $result = mysql(HR SELECT LastName FirstName FROM Employees ORDER BY LastName FirstName) $i = 0 while ($i lt mysql_numrows ($result)) $fields = mysql_fetch_row($result) echo ltpersongt$fields[1] $fields[0] ltpersongtrn $i++ mysql_close( )gt

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 3: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI3

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI4

XML dougrave viens-tu

eXtensible Markup Language le W3C (recommandation XML 10 1998) XML est le petit-fils de GML (IBM 60s)

et le fils de SGML (80s ISO en 1986) Cest un meacuteta-langage un langage de balisage

(un peu comme HTML) un meacuteta-format de donneacutees de documents un mode structuration de linformation de la connaissance

6 octobre 2008 Axe ISI5

XML quest-ce que cest XML HTML ndash balises de preacutesentation

+ DTD deacutefinies par lutilisateur XML = SGML ndash complexiteacute orientation document

+ simpliciteacute orientation eacutechanges de donneacutees

XML =80 des fonctionnaliteacutes de SGML20 de la complexiteacute de SGML

SGML vs XML httpwwww3orgTRNOTE-sgml-xmlhtml

6 octobre 2008 Axe ISI6

The design goals for XML are1- XML shall be straightforwardly usable over the Internet2- XML shall support a wide variety of applications3- XML shall be compatible with SGML4- It shall be easy to write programs which process XML

documents5- The number of optional features in XML is to be kept to the

absolute minimum ideally zero6- XML documents should be human-legible and reasonably clear7- The XML design should be prepared quickly8- The design of XML shall be formal and concise9- XML documents shall be easy to create10-Terseness in XML markup is of minimal importance

6 octobre 2008 Axe ISI7

XML un exempleltpersonne sexe=Mgt

ltnomgtltnom_de_famillegt

Beauneltnom_de_famillegtltprenomgtPhilippeltprenomgt

ltnomgtlt-- ici cest un commentaire --gt

ltprofessiongt Informaticienltprofessiongt ltprofessiongt enseignantchercheur ltprofessiongt

ltpersonnegt

6 octobre 2008 Axe ISI8

XML les bases

personne nom prenom profession sont des eacuteleacutements sexe

est un attribut Un eacuteleacutement est deacutelimiteacute par une balise ouvrante

ltpersonnegt et une balise fermante ltpersonnegt

Entre ces 2 balises il y a le contenu des eacuteleacutements des donneacutees textuelles

Eacuteleacutement vide ltbalise_d_element_videgt

6 octobre 2008 Axe ISI9

XML les eacuteleacutements

XML est case-sensitive (contrairement agrave html) Les eacuteleacutements peuvent ecirctre emboiteacutes jamais

entrelaceacutes ltpersonnegt ltpersonnegt

ltimportantgt ltimportantgtmoi meme moi meme

ltpersonnegt ltimportantgtltimportantgt ltpersonnegt

bien formeacute

6 octobre 2008 Axe ISI10

XML arbre

personne

nom

prenomnom_de_famille

profession profession

Beaune Philippe Informaticien enseignant chercheur

sexe=M

eacuteleacutement racine

descendants

6 octobre 2008 Axe ISI11

XML contenus mixtesltbiographygt ltnamegtltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegtltnamegt was one of the first people to truly deserve the name ltemphasizegtcomputer scientistltemphasizegt Although his contributions to the field are too numerous to list his best-known are the eponymous ltemphasizegtTuring Testltemphasizegt and ltemphasizegtTuring Machineltemphasizegt

ltdefinitiongtThe lttermgtTuring Testlttermgt is to this day the standard test for determining whether a computer is truly intelligent This test has yet to be passed ltdefinitiongt

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memory Thus what is true for a Turing machine is true for all equivalent machines no matter how implemented ltdefinitiongt

ltnamegtltlast_namegtTuringltlast_namegtltnamegt was also an accomplished ltprofessiongtmathematicianltprofessiongt and ltprofessiongtcryptographerltprofessiongt His assistance was crucial in helping the Allies decode the German Enigma machine He committed suicide on ltdategtltmonthgtJuneltmonthgt ltdaygt7ltdaygt ltyeargt1954ltyeargtltdategt after being convicted of homosexuality and forced to take female hormone injectionsltbiographygt

6 octobre 2008 Axe ISI12

XML appel dentiteacutes Dans les donneacutees textuelles certains caractegraveres

sont interdits lt amp Ils sont remplaceacutes par des appels dentiteacutes amplt et ampamp

5 entiteacutes sont preacutedeacutefinies en XML amplt ampamp ampgt ampquot et ampapos

Exemple Powered by OampaposReilly Books Autres appels amp233

6 octobre 2008 Axe ISI13

XML CDATA Les sections CDATA peuvent se trouver agrave nimporte quel endroit

acceptable pour des donneacutees textuelles Elles sont employeacutees pour des blocs de texte qui seraient autrement

interpreacuteteacutes comme balisage Les sections CDATA commencent par ltCDATA[ et finissent par ]]gt

ltpgtYou can use a default ltcodegtxmlnsltcodegt attribute to avoidhaving to add the svg prefix to all your elementsltpgt lt[CDATA[ ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ]]gt

6 octobre 2008 Axe ISI14

XML instructions de traitement Les instructions de traitement permettent aux documents de contenir

des instructions destineacutees aux softs qui traiteront le document Les instructions de traitement commencent par lt et finissent par gt Juste apregraves le lt se trouve la cible (un nom XML) Par ex

ltrobots index=yes follow=nogtltphp mysql_connect(databaseuncedu clerk password) $result = mysql(HR SELECT LastName FirstName FROM Employees ORDER BY LastName FirstName) $i = 0 while ($i lt mysql_numrows ($result)) $fields = mysql_fetch_row($result) echo ltpersongt$fields[1] $fields[0] ltpersongtrn $i++ mysql_close( )gt

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 4: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI4

XML dougrave viens-tu

eXtensible Markup Language le W3C (recommandation XML 10 1998) XML est le petit-fils de GML (IBM 60s)

et le fils de SGML (80s ISO en 1986) Cest un meacuteta-langage un langage de balisage

(un peu comme HTML) un meacuteta-format de donneacutees de documents un mode structuration de linformation de la connaissance

6 octobre 2008 Axe ISI5

XML quest-ce que cest XML HTML ndash balises de preacutesentation

+ DTD deacutefinies par lutilisateur XML = SGML ndash complexiteacute orientation document

+ simpliciteacute orientation eacutechanges de donneacutees

XML =80 des fonctionnaliteacutes de SGML20 de la complexiteacute de SGML

SGML vs XML httpwwww3orgTRNOTE-sgml-xmlhtml

6 octobre 2008 Axe ISI6

The design goals for XML are1- XML shall be straightforwardly usable over the Internet2- XML shall support a wide variety of applications3- XML shall be compatible with SGML4- It shall be easy to write programs which process XML

documents5- The number of optional features in XML is to be kept to the

absolute minimum ideally zero6- XML documents should be human-legible and reasonably clear7- The XML design should be prepared quickly8- The design of XML shall be formal and concise9- XML documents shall be easy to create10-Terseness in XML markup is of minimal importance

6 octobre 2008 Axe ISI7

XML un exempleltpersonne sexe=Mgt

ltnomgtltnom_de_famillegt

Beauneltnom_de_famillegtltprenomgtPhilippeltprenomgt

ltnomgtlt-- ici cest un commentaire --gt

ltprofessiongt Informaticienltprofessiongt ltprofessiongt enseignantchercheur ltprofessiongt

ltpersonnegt

6 octobre 2008 Axe ISI8

XML les bases

personne nom prenom profession sont des eacuteleacutements sexe

est un attribut Un eacuteleacutement est deacutelimiteacute par une balise ouvrante

ltpersonnegt et une balise fermante ltpersonnegt

Entre ces 2 balises il y a le contenu des eacuteleacutements des donneacutees textuelles

Eacuteleacutement vide ltbalise_d_element_videgt

6 octobre 2008 Axe ISI9

XML les eacuteleacutements

XML est case-sensitive (contrairement agrave html) Les eacuteleacutements peuvent ecirctre emboiteacutes jamais

entrelaceacutes ltpersonnegt ltpersonnegt

ltimportantgt ltimportantgtmoi meme moi meme

ltpersonnegt ltimportantgtltimportantgt ltpersonnegt

bien formeacute

6 octobre 2008 Axe ISI10

XML arbre

personne

nom

prenomnom_de_famille

profession profession

Beaune Philippe Informaticien enseignant chercheur

sexe=M

eacuteleacutement racine

descendants

6 octobre 2008 Axe ISI11

XML contenus mixtesltbiographygt ltnamegtltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegtltnamegt was one of the first people to truly deserve the name ltemphasizegtcomputer scientistltemphasizegt Although his contributions to the field are too numerous to list his best-known are the eponymous ltemphasizegtTuring Testltemphasizegt and ltemphasizegtTuring Machineltemphasizegt

ltdefinitiongtThe lttermgtTuring Testlttermgt is to this day the standard test for determining whether a computer is truly intelligent This test has yet to be passed ltdefinitiongt

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memory Thus what is true for a Turing machine is true for all equivalent machines no matter how implemented ltdefinitiongt

ltnamegtltlast_namegtTuringltlast_namegtltnamegt was also an accomplished ltprofessiongtmathematicianltprofessiongt and ltprofessiongtcryptographerltprofessiongt His assistance was crucial in helping the Allies decode the German Enigma machine He committed suicide on ltdategtltmonthgtJuneltmonthgt ltdaygt7ltdaygt ltyeargt1954ltyeargtltdategt after being convicted of homosexuality and forced to take female hormone injectionsltbiographygt

6 octobre 2008 Axe ISI12

XML appel dentiteacutes Dans les donneacutees textuelles certains caractegraveres

sont interdits lt amp Ils sont remplaceacutes par des appels dentiteacutes amplt et ampamp

5 entiteacutes sont preacutedeacutefinies en XML amplt ampamp ampgt ampquot et ampapos

Exemple Powered by OampaposReilly Books Autres appels amp233

6 octobre 2008 Axe ISI13

XML CDATA Les sections CDATA peuvent se trouver agrave nimporte quel endroit

acceptable pour des donneacutees textuelles Elles sont employeacutees pour des blocs de texte qui seraient autrement

interpreacuteteacutes comme balisage Les sections CDATA commencent par ltCDATA[ et finissent par ]]gt

ltpgtYou can use a default ltcodegtxmlnsltcodegt attribute to avoidhaving to add the svg prefix to all your elementsltpgt lt[CDATA[ ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ]]gt

6 octobre 2008 Axe ISI14

XML instructions de traitement Les instructions de traitement permettent aux documents de contenir

des instructions destineacutees aux softs qui traiteront le document Les instructions de traitement commencent par lt et finissent par gt Juste apregraves le lt se trouve la cible (un nom XML) Par ex

ltrobots index=yes follow=nogtltphp mysql_connect(databaseuncedu clerk password) $result = mysql(HR SELECT LastName FirstName FROM Employees ORDER BY LastName FirstName) $i = 0 while ($i lt mysql_numrows ($result)) $fields = mysql_fetch_row($result) echo ltpersongt$fields[1] $fields[0] ltpersongtrn $i++ mysql_close( )gt

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 5: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI5

XML quest-ce que cest XML HTML ndash balises de preacutesentation

+ DTD deacutefinies par lutilisateur XML = SGML ndash complexiteacute orientation document

+ simpliciteacute orientation eacutechanges de donneacutees

XML =80 des fonctionnaliteacutes de SGML20 de la complexiteacute de SGML

SGML vs XML httpwwww3orgTRNOTE-sgml-xmlhtml

6 octobre 2008 Axe ISI6

The design goals for XML are1- XML shall be straightforwardly usable over the Internet2- XML shall support a wide variety of applications3- XML shall be compatible with SGML4- It shall be easy to write programs which process XML

documents5- The number of optional features in XML is to be kept to the

absolute minimum ideally zero6- XML documents should be human-legible and reasonably clear7- The XML design should be prepared quickly8- The design of XML shall be formal and concise9- XML documents shall be easy to create10-Terseness in XML markup is of minimal importance

6 octobre 2008 Axe ISI7

XML un exempleltpersonne sexe=Mgt

ltnomgtltnom_de_famillegt

Beauneltnom_de_famillegtltprenomgtPhilippeltprenomgt

ltnomgtlt-- ici cest un commentaire --gt

ltprofessiongt Informaticienltprofessiongt ltprofessiongt enseignantchercheur ltprofessiongt

ltpersonnegt

6 octobre 2008 Axe ISI8

XML les bases

personne nom prenom profession sont des eacuteleacutements sexe

est un attribut Un eacuteleacutement est deacutelimiteacute par une balise ouvrante

ltpersonnegt et une balise fermante ltpersonnegt

Entre ces 2 balises il y a le contenu des eacuteleacutements des donneacutees textuelles

Eacuteleacutement vide ltbalise_d_element_videgt

6 octobre 2008 Axe ISI9

XML les eacuteleacutements

XML est case-sensitive (contrairement agrave html) Les eacuteleacutements peuvent ecirctre emboiteacutes jamais

entrelaceacutes ltpersonnegt ltpersonnegt

ltimportantgt ltimportantgtmoi meme moi meme

ltpersonnegt ltimportantgtltimportantgt ltpersonnegt

bien formeacute

6 octobre 2008 Axe ISI10

XML arbre

personne

nom

prenomnom_de_famille

profession profession

Beaune Philippe Informaticien enseignant chercheur

sexe=M

eacuteleacutement racine

descendants

6 octobre 2008 Axe ISI11

XML contenus mixtesltbiographygt ltnamegtltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegtltnamegt was one of the first people to truly deserve the name ltemphasizegtcomputer scientistltemphasizegt Although his contributions to the field are too numerous to list his best-known are the eponymous ltemphasizegtTuring Testltemphasizegt and ltemphasizegtTuring Machineltemphasizegt

ltdefinitiongtThe lttermgtTuring Testlttermgt is to this day the standard test for determining whether a computer is truly intelligent This test has yet to be passed ltdefinitiongt

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memory Thus what is true for a Turing machine is true for all equivalent machines no matter how implemented ltdefinitiongt

ltnamegtltlast_namegtTuringltlast_namegtltnamegt was also an accomplished ltprofessiongtmathematicianltprofessiongt and ltprofessiongtcryptographerltprofessiongt His assistance was crucial in helping the Allies decode the German Enigma machine He committed suicide on ltdategtltmonthgtJuneltmonthgt ltdaygt7ltdaygt ltyeargt1954ltyeargtltdategt after being convicted of homosexuality and forced to take female hormone injectionsltbiographygt

6 octobre 2008 Axe ISI12

XML appel dentiteacutes Dans les donneacutees textuelles certains caractegraveres

sont interdits lt amp Ils sont remplaceacutes par des appels dentiteacutes amplt et ampamp

5 entiteacutes sont preacutedeacutefinies en XML amplt ampamp ampgt ampquot et ampapos

Exemple Powered by OampaposReilly Books Autres appels amp233

6 octobre 2008 Axe ISI13

XML CDATA Les sections CDATA peuvent se trouver agrave nimporte quel endroit

acceptable pour des donneacutees textuelles Elles sont employeacutees pour des blocs de texte qui seraient autrement

interpreacuteteacutes comme balisage Les sections CDATA commencent par ltCDATA[ et finissent par ]]gt

ltpgtYou can use a default ltcodegtxmlnsltcodegt attribute to avoidhaving to add the svg prefix to all your elementsltpgt lt[CDATA[ ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ]]gt

6 octobre 2008 Axe ISI14

XML instructions de traitement Les instructions de traitement permettent aux documents de contenir

des instructions destineacutees aux softs qui traiteront le document Les instructions de traitement commencent par lt et finissent par gt Juste apregraves le lt se trouve la cible (un nom XML) Par ex

ltrobots index=yes follow=nogtltphp mysql_connect(databaseuncedu clerk password) $result = mysql(HR SELECT LastName FirstName FROM Employees ORDER BY LastName FirstName) $i = 0 while ($i lt mysql_numrows ($result)) $fields = mysql_fetch_row($result) echo ltpersongt$fields[1] $fields[0] ltpersongtrn $i++ mysql_close( )gt

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 6: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI6

The design goals for XML are1- XML shall be straightforwardly usable over the Internet2- XML shall support a wide variety of applications3- XML shall be compatible with SGML4- It shall be easy to write programs which process XML

documents5- The number of optional features in XML is to be kept to the

absolute minimum ideally zero6- XML documents should be human-legible and reasonably clear7- The XML design should be prepared quickly8- The design of XML shall be formal and concise9- XML documents shall be easy to create10-Terseness in XML markup is of minimal importance

6 octobre 2008 Axe ISI7

XML un exempleltpersonne sexe=Mgt

ltnomgtltnom_de_famillegt

Beauneltnom_de_famillegtltprenomgtPhilippeltprenomgt

ltnomgtlt-- ici cest un commentaire --gt

ltprofessiongt Informaticienltprofessiongt ltprofessiongt enseignantchercheur ltprofessiongt

ltpersonnegt

6 octobre 2008 Axe ISI8

XML les bases

personne nom prenom profession sont des eacuteleacutements sexe

est un attribut Un eacuteleacutement est deacutelimiteacute par une balise ouvrante

ltpersonnegt et une balise fermante ltpersonnegt

Entre ces 2 balises il y a le contenu des eacuteleacutements des donneacutees textuelles

Eacuteleacutement vide ltbalise_d_element_videgt

6 octobre 2008 Axe ISI9

XML les eacuteleacutements

XML est case-sensitive (contrairement agrave html) Les eacuteleacutements peuvent ecirctre emboiteacutes jamais

entrelaceacutes ltpersonnegt ltpersonnegt

ltimportantgt ltimportantgtmoi meme moi meme

ltpersonnegt ltimportantgtltimportantgt ltpersonnegt

bien formeacute

6 octobre 2008 Axe ISI10

XML arbre

personne

nom

prenomnom_de_famille

profession profession

Beaune Philippe Informaticien enseignant chercheur

sexe=M

eacuteleacutement racine

descendants

6 octobre 2008 Axe ISI11

XML contenus mixtesltbiographygt ltnamegtltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegtltnamegt was one of the first people to truly deserve the name ltemphasizegtcomputer scientistltemphasizegt Although his contributions to the field are too numerous to list his best-known are the eponymous ltemphasizegtTuring Testltemphasizegt and ltemphasizegtTuring Machineltemphasizegt

ltdefinitiongtThe lttermgtTuring Testlttermgt is to this day the standard test for determining whether a computer is truly intelligent This test has yet to be passed ltdefinitiongt

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memory Thus what is true for a Turing machine is true for all equivalent machines no matter how implemented ltdefinitiongt

ltnamegtltlast_namegtTuringltlast_namegtltnamegt was also an accomplished ltprofessiongtmathematicianltprofessiongt and ltprofessiongtcryptographerltprofessiongt His assistance was crucial in helping the Allies decode the German Enigma machine He committed suicide on ltdategtltmonthgtJuneltmonthgt ltdaygt7ltdaygt ltyeargt1954ltyeargtltdategt after being convicted of homosexuality and forced to take female hormone injectionsltbiographygt

6 octobre 2008 Axe ISI12

XML appel dentiteacutes Dans les donneacutees textuelles certains caractegraveres

sont interdits lt amp Ils sont remplaceacutes par des appels dentiteacutes amplt et ampamp

5 entiteacutes sont preacutedeacutefinies en XML amplt ampamp ampgt ampquot et ampapos

Exemple Powered by OampaposReilly Books Autres appels amp233

6 octobre 2008 Axe ISI13

XML CDATA Les sections CDATA peuvent se trouver agrave nimporte quel endroit

acceptable pour des donneacutees textuelles Elles sont employeacutees pour des blocs de texte qui seraient autrement

interpreacuteteacutes comme balisage Les sections CDATA commencent par ltCDATA[ et finissent par ]]gt

ltpgtYou can use a default ltcodegtxmlnsltcodegt attribute to avoidhaving to add the svg prefix to all your elementsltpgt lt[CDATA[ ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ]]gt

6 octobre 2008 Axe ISI14

XML instructions de traitement Les instructions de traitement permettent aux documents de contenir

des instructions destineacutees aux softs qui traiteront le document Les instructions de traitement commencent par lt et finissent par gt Juste apregraves le lt se trouve la cible (un nom XML) Par ex

ltrobots index=yes follow=nogtltphp mysql_connect(databaseuncedu clerk password) $result = mysql(HR SELECT LastName FirstName FROM Employees ORDER BY LastName FirstName) $i = 0 while ($i lt mysql_numrows ($result)) $fields = mysql_fetch_row($result) echo ltpersongt$fields[1] $fields[0] ltpersongtrn $i++ mysql_close( )gt

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 7: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI7

XML un exempleltpersonne sexe=Mgt

ltnomgtltnom_de_famillegt

Beauneltnom_de_famillegtltprenomgtPhilippeltprenomgt

ltnomgtlt-- ici cest un commentaire --gt

ltprofessiongt Informaticienltprofessiongt ltprofessiongt enseignantchercheur ltprofessiongt

ltpersonnegt

6 octobre 2008 Axe ISI8

XML les bases

personne nom prenom profession sont des eacuteleacutements sexe

est un attribut Un eacuteleacutement est deacutelimiteacute par une balise ouvrante

ltpersonnegt et une balise fermante ltpersonnegt

Entre ces 2 balises il y a le contenu des eacuteleacutements des donneacutees textuelles

Eacuteleacutement vide ltbalise_d_element_videgt

6 octobre 2008 Axe ISI9

XML les eacuteleacutements

XML est case-sensitive (contrairement agrave html) Les eacuteleacutements peuvent ecirctre emboiteacutes jamais

entrelaceacutes ltpersonnegt ltpersonnegt

ltimportantgt ltimportantgtmoi meme moi meme

ltpersonnegt ltimportantgtltimportantgt ltpersonnegt

bien formeacute

6 octobre 2008 Axe ISI10

XML arbre

personne

nom

prenomnom_de_famille

profession profession

Beaune Philippe Informaticien enseignant chercheur

sexe=M

eacuteleacutement racine

descendants

6 octobre 2008 Axe ISI11

XML contenus mixtesltbiographygt ltnamegtltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegtltnamegt was one of the first people to truly deserve the name ltemphasizegtcomputer scientistltemphasizegt Although his contributions to the field are too numerous to list his best-known are the eponymous ltemphasizegtTuring Testltemphasizegt and ltemphasizegtTuring Machineltemphasizegt

ltdefinitiongtThe lttermgtTuring Testlttermgt is to this day the standard test for determining whether a computer is truly intelligent This test has yet to be passed ltdefinitiongt

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memory Thus what is true for a Turing machine is true for all equivalent machines no matter how implemented ltdefinitiongt

ltnamegtltlast_namegtTuringltlast_namegtltnamegt was also an accomplished ltprofessiongtmathematicianltprofessiongt and ltprofessiongtcryptographerltprofessiongt His assistance was crucial in helping the Allies decode the German Enigma machine He committed suicide on ltdategtltmonthgtJuneltmonthgt ltdaygt7ltdaygt ltyeargt1954ltyeargtltdategt after being convicted of homosexuality and forced to take female hormone injectionsltbiographygt

6 octobre 2008 Axe ISI12

XML appel dentiteacutes Dans les donneacutees textuelles certains caractegraveres

sont interdits lt amp Ils sont remplaceacutes par des appels dentiteacutes amplt et ampamp

5 entiteacutes sont preacutedeacutefinies en XML amplt ampamp ampgt ampquot et ampapos

Exemple Powered by OampaposReilly Books Autres appels amp233

6 octobre 2008 Axe ISI13

XML CDATA Les sections CDATA peuvent se trouver agrave nimporte quel endroit

acceptable pour des donneacutees textuelles Elles sont employeacutees pour des blocs de texte qui seraient autrement

interpreacuteteacutes comme balisage Les sections CDATA commencent par ltCDATA[ et finissent par ]]gt

ltpgtYou can use a default ltcodegtxmlnsltcodegt attribute to avoidhaving to add the svg prefix to all your elementsltpgt lt[CDATA[ ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ]]gt

6 octobre 2008 Axe ISI14

XML instructions de traitement Les instructions de traitement permettent aux documents de contenir

des instructions destineacutees aux softs qui traiteront le document Les instructions de traitement commencent par lt et finissent par gt Juste apregraves le lt se trouve la cible (un nom XML) Par ex

ltrobots index=yes follow=nogtltphp mysql_connect(databaseuncedu clerk password) $result = mysql(HR SELECT LastName FirstName FROM Employees ORDER BY LastName FirstName) $i = 0 while ($i lt mysql_numrows ($result)) $fields = mysql_fetch_row($result) echo ltpersongt$fields[1] $fields[0] ltpersongtrn $i++ mysql_close( )gt

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 8: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI8

XML les bases

personne nom prenom profession sont des eacuteleacutements sexe

est un attribut Un eacuteleacutement est deacutelimiteacute par une balise ouvrante

ltpersonnegt et une balise fermante ltpersonnegt

Entre ces 2 balises il y a le contenu des eacuteleacutements des donneacutees textuelles

Eacuteleacutement vide ltbalise_d_element_videgt

6 octobre 2008 Axe ISI9

XML les eacuteleacutements

XML est case-sensitive (contrairement agrave html) Les eacuteleacutements peuvent ecirctre emboiteacutes jamais

entrelaceacutes ltpersonnegt ltpersonnegt

ltimportantgt ltimportantgtmoi meme moi meme

ltpersonnegt ltimportantgtltimportantgt ltpersonnegt

bien formeacute

6 octobre 2008 Axe ISI10

XML arbre

personne

nom

prenomnom_de_famille

profession profession

Beaune Philippe Informaticien enseignant chercheur

sexe=M

eacuteleacutement racine

descendants

6 octobre 2008 Axe ISI11

XML contenus mixtesltbiographygt ltnamegtltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegtltnamegt was one of the first people to truly deserve the name ltemphasizegtcomputer scientistltemphasizegt Although his contributions to the field are too numerous to list his best-known are the eponymous ltemphasizegtTuring Testltemphasizegt and ltemphasizegtTuring Machineltemphasizegt

ltdefinitiongtThe lttermgtTuring Testlttermgt is to this day the standard test for determining whether a computer is truly intelligent This test has yet to be passed ltdefinitiongt

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memory Thus what is true for a Turing machine is true for all equivalent machines no matter how implemented ltdefinitiongt

ltnamegtltlast_namegtTuringltlast_namegtltnamegt was also an accomplished ltprofessiongtmathematicianltprofessiongt and ltprofessiongtcryptographerltprofessiongt His assistance was crucial in helping the Allies decode the German Enigma machine He committed suicide on ltdategtltmonthgtJuneltmonthgt ltdaygt7ltdaygt ltyeargt1954ltyeargtltdategt after being convicted of homosexuality and forced to take female hormone injectionsltbiographygt

6 octobre 2008 Axe ISI12

XML appel dentiteacutes Dans les donneacutees textuelles certains caractegraveres

sont interdits lt amp Ils sont remplaceacutes par des appels dentiteacutes amplt et ampamp

5 entiteacutes sont preacutedeacutefinies en XML amplt ampamp ampgt ampquot et ampapos

Exemple Powered by OampaposReilly Books Autres appels amp233

6 octobre 2008 Axe ISI13

XML CDATA Les sections CDATA peuvent se trouver agrave nimporte quel endroit

acceptable pour des donneacutees textuelles Elles sont employeacutees pour des blocs de texte qui seraient autrement

interpreacuteteacutes comme balisage Les sections CDATA commencent par ltCDATA[ et finissent par ]]gt

ltpgtYou can use a default ltcodegtxmlnsltcodegt attribute to avoidhaving to add the svg prefix to all your elementsltpgt lt[CDATA[ ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ]]gt

6 octobre 2008 Axe ISI14

XML instructions de traitement Les instructions de traitement permettent aux documents de contenir

des instructions destineacutees aux softs qui traiteront le document Les instructions de traitement commencent par lt et finissent par gt Juste apregraves le lt se trouve la cible (un nom XML) Par ex

ltrobots index=yes follow=nogtltphp mysql_connect(databaseuncedu clerk password) $result = mysql(HR SELECT LastName FirstName FROM Employees ORDER BY LastName FirstName) $i = 0 while ($i lt mysql_numrows ($result)) $fields = mysql_fetch_row($result) echo ltpersongt$fields[1] $fields[0] ltpersongtrn $i++ mysql_close( )gt

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 9: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI9

XML les eacuteleacutements

XML est case-sensitive (contrairement agrave html) Les eacuteleacutements peuvent ecirctre emboiteacutes jamais

entrelaceacutes ltpersonnegt ltpersonnegt

ltimportantgt ltimportantgtmoi meme moi meme

ltpersonnegt ltimportantgtltimportantgt ltpersonnegt

bien formeacute

6 octobre 2008 Axe ISI10

XML arbre

personne

nom

prenomnom_de_famille

profession profession

Beaune Philippe Informaticien enseignant chercheur

sexe=M

eacuteleacutement racine

descendants

6 octobre 2008 Axe ISI11

XML contenus mixtesltbiographygt ltnamegtltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegtltnamegt was one of the first people to truly deserve the name ltemphasizegtcomputer scientistltemphasizegt Although his contributions to the field are too numerous to list his best-known are the eponymous ltemphasizegtTuring Testltemphasizegt and ltemphasizegtTuring Machineltemphasizegt

ltdefinitiongtThe lttermgtTuring Testlttermgt is to this day the standard test for determining whether a computer is truly intelligent This test has yet to be passed ltdefinitiongt

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memory Thus what is true for a Turing machine is true for all equivalent machines no matter how implemented ltdefinitiongt

ltnamegtltlast_namegtTuringltlast_namegtltnamegt was also an accomplished ltprofessiongtmathematicianltprofessiongt and ltprofessiongtcryptographerltprofessiongt His assistance was crucial in helping the Allies decode the German Enigma machine He committed suicide on ltdategtltmonthgtJuneltmonthgt ltdaygt7ltdaygt ltyeargt1954ltyeargtltdategt after being convicted of homosexuality and forced to take female hormone injectionsltbiographygt

6 octobre 2008 Axe ISI12

XML appel dentiteacutes Dans les donneacutees textuelles certains caractegraveres

sont interdits lt amp Ils sont remplaceacutes par des appels dentiteacutes amplt et ampamp

5 entiteacutes sont preacutedeacutefinies en XML amplt ampamp ampgt ampquot et ampapos

Exemple Powered by OampaposReilly Books Autres appels amp233

6 octobre 2008 Axe ISI13

XML CDATA Les sections CDATA peuvent se trouver agrave nimporte quel endroit

acceptable pour des donneacutees textuelles Elles sont employeacutees pour des blocs de texte qui seraient autrement

interpreacuteteacutes comme balisage Les sections CDATA commencent par ltCDATA[ et finissent par ]]gt

ltpgtYou can use a default ltcodegtxmlnsltcodegt attribute to avoidhaving to add the svg prefix to all your elementsltpgt lt[CDATA[ ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ]]gt

6 octobre 2008 Axe ISI14

XML instructions de traitement Les instructions de traitement permettent aux documents de contenir

des instructions destineacutees aux softs qui traiteront le document Les instructions de traitement commencent par lt et finissent par gt Juste apregraves le lt se trouve la cible (un nom XML) Par ex

ltrobots index=yes follow=nogtltphp mysql_connect(databaseuncedu clerk password) $result = mysql(HR SELECT LastName FirstName FROM Employees ORDER BY LastName FirstName) $i = 0 while ($i lt mysql_numrows ($result)) $fields = mysql_fetch_row($result) echo ltpersongt$fields[1] $fields[0] ltpersongtrn $i++ mysql_close( )gt

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 10: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI10

XML arbre

personne

nom

prenomnom_de_famille

profession profession

Beaune Philippe Informaticien enseignant chercheur

sexe=M

eacuteleacutement racine

descendants

6 octobre 2008 Axe ISI11

XML contenus mixtesltbiographygt ltnamegtltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegtltnamegt was one of the first people to truly deserve the name ltemphasizegtcomputer scientistltemphasizegt Although his contributions to the field are too numerous to list his best-known are the eponymous ltemphasizegtTuring Testltemphasizegt and ltemphasizegtTuring Machineltemphasizegt

ltdefinitiongtThe lttermgtTuring Testlttermgt is to this day the standard test for determining whether a computer is truly intelligent This test has yet to be passed ltdefinitiongt

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memory Thus what is true for a Turing machine is true for all equivalent machines no matter how implemented ltdefinitiongt

ltnamegtltlast_namegtTuringltlast_namegtltnamegt was also an accomplished ltprofessiongtmathematicianltprofessiongt and ltprofessiongtcryptographerltprofessiongt His assistance was crucial in helping the Allies decode the German Enigma machine He committed suicide on ltdategtltmonthgtJuneltmonthgt ltdaygt7ltdaygt ltyeargt1954ltyeargtltdategt after being convicted of homosexuality and forced to take female hormone injectionsltbiographygt

6 octobre 2008 Axe ISI12

XML appel dentiteacutes Dans les donneacutees textuelles certains caractegraveres

sont interdits lt amp Ils sont remplaceacutes par des appels dentiteacutes amplt et ampamp

5 entiteacutes sont preacutedeacutefinies en XML amplt ampamp ampgt ampquot et ampapos

Exemple Powered by OampaposReilly Books Autres appels amp233

6 octobre 2008 Axe ISI13

XML CDATA Les sections CDATA peuvent se trouver agrave nimporte quel endroit

acceptable pour des donneacutees textuelles Elles sont employeacutees pour des blocs de texte qui seraient autrement

interpreacuteteacutes comme balisage Les sections CDATA commencent par ltCDATA[ et finissent par ]]gt

ltpgtYou can use a default ltcodegtxmlnsltcodegt attribute to avoidhaving to add the svg prefix to all your elementsltpgt lt[CDATA[ ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ]]gt

6 octobre 2008 Axe ISI14

XML instructions de traitement Les instructions de traitement permettent aux documents de contenir

des instructions destineacutees aux softs qui traiteront le document Les instructions de traitement commencent par lt et finissent par gt Juste apregraves le lt se trouve la cible (un nom XML) Par ex

ltrobots index=yes follow=nogtltphp mysql_connect(databaseuncedu clerk password) $result = mysql(HR SELECT LastName FirstName FROM Employees ORDER BY LastName FirstName) $i = 0 while ($i lt mysql_numrows ($result)) $fields = mysql_fetch_row($result) echo ltpersongt$fields[1] $fields[0] ltpersongtrn $i++ mysql_close( )gt

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 11: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI11

XML contenus mixtesltbiographygt ltnamegtltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegtltnamegt was one of the first people to truly deserve the name ltemphasizegtcomputer scientistltemphasizegt Although his contributions to the field are too numerous to list his best-known are the eponymous ltemphasizegtTuring Testltemphasizegt and ltemphasizegtTuring Machineltemphasizegt

ltdefinitiongtThe lttermgtTuring Testlttermgt is to this day the standard test for determining whether a computer is truly intelligent This test has yet to be passed ltdefinitiongt

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memory Thus what is true for a Turing machine is true for all equivalent machines no matter how implemented ltdefinitiongt

ltnamegtltlast_namegtTuringltlast_namegtltnamegt was also an accomplished ltprofessiongtmathematicianltprofessiongt and ltprofessiongtcryptographerltprofessiongt His assistance was crucial in helping the Allies decode the German Enigma machine He committed suicide on ltdategtltmonthgtJuneltmonthgt ltdaygt7ltdaygt ltyeargt1954ltyeargtltdategt after being convicted of homosexuality and forced to take female hormone injectionsltbiographygt

6 octobre 2008 Axe ISI12

XML appel dentiteacutes Dans les donneacutees textuelles certains caractegraveres

sont interdits lt amp Ils sont remplaceacutes par des appels dentiteacutes amplt et ampamp

5 entiteacutes sont preacutedeacutefinies en XML amplt ampamp ampgt ampquot et ampapos

Exemple Powered by OampaposReilly Books Autres appels amp233

6 octobre 2008 Axe ISI13

XML CDATA Les sections CDATA peuvent se trouver agrave nimporte quel endroit

acceptable pour des donneacutees textuelles Elles sont employeacutees pour des blocs de texte qui seraient autrement

interpreacuteteacutes comme balisage Les sections CDATA commencent par ltCDATA[ et finissent par ]]gt

ltpgtYou can use a default ltcodegtxmlnsltcodegt attribute to avoidhaving to add the svg prefix to all your elementsltpgt lt[CDATA[ ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ]]gt

6 octobre 2008 Axe ISI14

XML instructions de traitement Les instructions de traitement permettent aux documents de contenir

des instructions destineacutees aux softs qui traiteront le document Les instructions de traitement commencent par lt et finissent par gt Juste apregraves le lt se trouve la cible (un nom XML) Par ex

ltrobots index=yes follow=nogtltphp mysql_connect(databaseuncedu clerk password) $result = mysql(HR SELECT LastName FirstName FROM Employees ORDER BY LastName FirstName) $i = 0 while ($i lt mysql_numrows ($result)) $fields = mysql_fetch_row($result) echo ltpersongt$fields[1] $fields[0] ltpersongtrn $i++ mysql_close( )gt

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 12: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI12

XML appel dentiteacutes Dans les donneacutees textuelles certains caractegraveres

sont interdits lt amp Ils sont remplaceacutes par des appels dentiteacutes amplt et ampamp

5 entiteacutes sont preacutedeacutefinies en XML amplt ampamp ampgt ampquot et ampapos

Exemple Powered by OampaposReilly Books Autres appels amp233

6 octobre 2008 Axe ISI13

XML CDATA Les sections CDATA peuvent se trouver agrave nimporte quel endroit

acceptable pour des donneacutees textuelles Elles sont employeacutees pour des blocs de texte qui seraient autrement

interpreacuteteacutes comme balisage Les sections CDATA commencent par ltCDATA[ et finissent par ]]gt

ltpgtYou can use a default ltcodegtxmlnsltcodegt attribute to avoidhaving to add the svg prefix to all your elementsltpgt lt[CDATA[ ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ]]gt

6 octobre 2008 Axe ISI14

XML instructions de traitement Les instructions de traitement permettent aux documents de contenir

des instructions destineacutees aux softs qui traiteront le document Les instructions de traitement commencent par lt et finissent par gt Juste apregraves le lt se trouve la cible (un nom XML) Par ex

ltrobots index=yes follow=nogtltphp mysql_connect(databaseuncedu clerk password) $result = mysql(HR SELECT LastName FirstName FROM Employees ORDER BY LastName FirstName) $i = 0 while ($i lt mysql_numrows ($result)) $fields = mysql_fetch_row($result) echo ltpersongt$fields[1] $fields[0] ltpersongtrn $i++ mysql_close( )gt

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 13: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI13

XML CDATA Les sections CDATA peuvent se trouver agrave nimporte quel endroit

acceptable pour des donneacutees textuelles Elles sont employeacutees pour des blocs de texte qui seraient autrement

interpreacuteteacutes comme balisage Les sections CDATA commencent par ltCDATA[ et finissent par ]]gt

ltpgtYou can use a default ltcodegtxmlnsltcodegt attribute to avoidhaving to add the svg prefix to all your elementsltpgt lt[CDATA[ ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ]]gt

6 octobre 2008 Axe ISI14

XML instructions de traitement Les instructions de traitement permettent aux documents de contenir

des instructions destineacutees aux softs qui traiteront le document Les instructions de traitement commencent par lt et finissent par gt Juste apregraves le lt se trouve la cible (un nom XML) Par ex

ltrobots index=yes follow=nogtltphp mysql_connect(databaseuncedu clerk password) $result = mysql(HR SELECT LastName FirstName FROM Employees ORDER BY LastName FirstName) $i = 0 while ($i lt mysql_numrows ($result)) $fields = mysql_fetch_row($result) echo ltpersongt$fields[1] $fields[0] ltpersongtrn $i++ mysql_close( )gt

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 14: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI14

XML instructions de traitement Les instructions de traitement permettent aux documents de contenir

des instructions destineacutees aux softs qui traiteront le document Les instructions de traitement commencent par lt et finissent par gt Juste apregraves le lt se trouve la cible (un nom XML) Par ex

ltrobots index=yes follow=nogtltphp mysql_connect(databaseuncedu clerk password) $result = mysql(HR SELECT LastName FirstName FROM Employees ORDER BY LastName FirstName) $i = 0 while ($i lt mysql_numrows ($result)) $fields = mysql_fetch_row($result) echo ltpersongt$fields[1] $fields[0] ltpersongtrn $i++ mysql_close( )gt

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 15: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI15

XML deacuteclaration

Un document XML devrait commencer par une deacuteclaration XML (une instruction de traitement avec xml comme nom) Ce nest pas obligatoire mais lorsquil y en a une elle doit ecirctre au tout deacutebut de la premiegravere ligne du document

ltxml version=10 encoding=ASCII standalone=yesgtltpersongt Alan Turingltpersongt

ou UTF-8 ouISO-8859-1 par deacutefaut ce serade lUnicode ()

Le document est-il autonomeou non (cf DTD) Le deacutefautest no

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 16: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI16

XML regravegles de base Deacuteclaration en 1egravere ligne

ltxml version=rsquorsquo10rsquorsquo standalone=rsquorsquoyesrsquorsquogt Les eacuteleacutements non vides ont une balise de deacutebut et une

balise de fin Les eacuteleacutements vides se terminent par gt Un document doit contenir un et seul eacuteleacutement (leacuteleacutement

racine) qui contient tous les autres eacuteleacutements Les eacuteleacutements srsquoemboicirctent mais ne srsquoentrelacent pas Les attributs doivent ecirctre quoteacutes lt et amp ne peuvent ecirctre utiliseacutes que pour commencer une

balise ou un appel dentiteacute

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 17: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI17

XML exemple quelconqueltxml version=10 encoding=ISO-8859-1gtltbibliogt ltlivregt lt-- Eacuteleacutement enfant titre --gt lttitregtLes Miseacuterableslttitregt ltauteurgtVictor Hugoltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregt ltlivregt lttitregtLAssomoirlttitregt ltauteurgtEacutemile Zolaltauteurgt ltlivregt ltlivre lang=engt lttitregtDavid Copperfieldlttitregt ltauteurgtCharles Dickensltauteurgt ltnb_tomesgt3ltnb_tomesgt ltlivregtltbibliogt

bien formeacute

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 18: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI18

XML exemple en MathMLltmath xmlns=httpwwww3org1998MathMathMLgt ltmrowgt ltmsupgt ltmfencedgt ltmrowgt ltmigtaltmigt ltmogt+ltmogt ltmigtbltmigt ltmrowgt ltmfencedgt ltmngt2ltmngt ltmsupgt ltmrowgtltmathgt

(a + b)2

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 19: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI19

XML exemple en SVGltxml version=10 standalone=nogtltDOCTYPE svg PUBLIC -W3CDTD SVG 11EN httpwwww3orgGraphicsSVG11DTDsvg11dtdgt

ltsvg width=5cm height=5cm version=11 xmlns=httpwwww3org2000svggt ltdescgtTwo groups each of two rectangles ltdescgt ltg id=group1 fill=red gt ltrect x=1cm y=1cm width=1cm height=1cm gt ltrect x=3cm y=1cm width=1cm height=1cm gt ltggt ltg id=group2 fill=blue gt ltrect x=1cm y=3cm width=1cm height=1cm gt ltrect x=3cm y=3cm width=1cm height=1cm gt ltggt lt-- Show outline of canvas using rect element --gt ltrect x=01cm y=01cm width=498cm height=498cm fill=none stroke=blue stroke-width=02cm gtltsvggt

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 20: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI20

XML exemple en RDF

ltrdfRDFgt

ltrdfDescription about=httpwwww3orgHomeLassilagt ltsCreacuteateur rdfresource=httpwwww3orgstaffId85740gt

ltrdfDescriptiongt

ltrdfDescription about=httpwwww3orgstaffId85740gt

ltvNomgtOra LassilaltvNomgt ltvEmailgtlassilaw3orgltvEmailgt

ltrdfDescriptiongt

ltrdfRDFgt

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 21: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI21

XML exemple en DocBookltxml version=10 encoding=UTF-8gtltDOCTYPE book SYSTEM fileDDocBook DTDdocbookxdtd [

ltENTITY emse Ecole Nationale supeacuterieure des Mines de Saint-EtiennegtltENTITY cv SYSTEM fileDWorkSpacemoncvcv2xmlgtltENTITY emse Ecole des MinesgtltENTITY prenom PhilippegtltENTITY nom Beaunegt]gt

ltbook lang=frgtltdedication status=brouillongt

lttitlegtA ma grand-megraverelttitlegtltwarninggt ltparagtCe nest quun essailtparagt ltwarninggt

ltdedicationgtltbookinfogt lttitlegtMon Premier Beau LivrelttitlegtltauthorgtltfirstnamegtPhilippeltfirstnamegtltsurnamegtBeauneltsurnamegtltauthorgtltdategt2004-09-28ltdategtltbookinfogtltprefacegt lttitlegtPreacutefacelttitlegt

ltparagtDu blablaltparagt ltprefacegtltchaptergt

lttitlegtEtat de lartlttitlegtampcv

ltchaptergtltindexgt

ltbookgt

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 22: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI22

XML validation

DTD Document Type Definition DTD permet de fournir un ensemble formel

de regravegles pour deacutefinir la structure dun document

Par exemple en XHTML un eacuteleacutement li ne peut se trouver quen fils de ul ou ol

Un document XML sera valide sil est bien formeacute et sil respecte sa DTD

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 23: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI23

XML DTD Une DTD est composeacutee de deacuteclarations Principe tout ce qui nest pas autoriseacute est interdit Que fait le validateur en cas dinvaliditeacute Rejet Arrecirct

Ignorance Le document XML doit contenir une reacutefeacuterence agrave sa DTD

ltxml version=10 standalone=nogt

ltDOCTYPE per son SYSTEM httpw w wcafeconlecheor gdtdsper sondtdgt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 24: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI24

DTD deacuteclarations internesltxml version=10gt

ltDOCTYPE person [ ltELEMENT person (name profession)gt ltELEMENT first_name (PCDATA)gt ltELEMENT last_name (PCDATA)gt ltELEMENT profession (PCDATA)gt ltELEMENT name (first_name last_name)gt]gt

ltpersongt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongtltpersongt

bien formeacute

et valide

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 25: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI25

DTD la deacuteclaration

ltDOCTYPE person SYSTEM httpw w wcafeconlecheor gdtdspersondtdgt

eacuteleacutement racine

ltDOCTYPE rss PUBLIC -Netscape Communicat ionsDTD RSS 091EN httpmynetscapecompubl ishfor matsrss-091dtdgt

Public ID

ltDOCTYPE person SYSTEM dtdspersondtdgt

ltDOCTYPE person SYSTEM persondtdgt

annonce une Public IDavec URI de secours

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 26: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI26

DTD deacuteclaration semi-interne

ltDOCTYPE per son SYSTEM namedtd [ ltELEMENT profession ( PCDATA ) gt ltELEMENT per son ( name profession ) gt] gt

internal DTD subset

external DTD subset

ATTENTION ces 2 sous-ensemblesdoivent ecirctre compatibles et lun ne doitpas redeacutefinir un eacuteleacutement de lautreSinon problegravemeNeacuteanmoins des deacuteclarations dentiteacutespeuvent ecirctre refaites mais

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 27: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI27

DTD dans le deacutetail (1) Eacuteleacutements forme geacuteneacuterale =

ltELEMENT element_name content_specificationgt Contenu = donneacutees textuelles uniquement

ltELEMENT phone_number (PCDATA)gt Contenu = un seul fils

ltELEMENT fax (phone_number)gt Contenu = seacutequence ordonneacutee

ltELEMENT name (first_name last_name)gt Contenu nombre de fils

ltELEMENT name (f_name+ m_name l_name)gt

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 28: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI28

DTD dans le deacutetail (2)

Contenu = au choix ltELEMENT method (params | fault | PCDATA)gt

Contenu = combinaison ltELEMENT circle (center (radius|diameter))gt

Contenu = mixte ltELEMENT definition (PCDATA | term) gt

exemple

ltdefinitiongtThe lttermgtTuring Machinelttermgt is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memoryltdefinitiongt

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 29: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI29

DTD dans le deacutetail (3)

Contenu = nimporte quoi ltELEMENT page ANY gt

Les attributs ltATTLIST image source CDATA REQUIRED width CDATA REQUIRED height CDATA REQUIRED alt CDATA IMPLIED gt

eacuteleacutement

obligatoire

optionneldonneacutee textuelle

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 30: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI30

DTD dans le deacutetail (4) Contenu des attributs

CDATA donneacutee textuelle NMTOKEN name token NMTOKENS un ou plusieurs name token Enumeration ( 1 | 2 | toto ) ENTITY cf deacuteclaration ENTITY ENTITIES plusieurs ENTITY ID un nom unique dans le doc XML IDREF lattribut ID dun autre eacuteleacutement IDREFS plusieurs IDREF NOTATION cf deacuteclaration NOTATION

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 31: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI31

DTD dans le deacutetail (5)

Attributs compleacutement de deacuteclarations IMPLIED attribut optionnel REQUIRED attribut obligatoire FIXED (valeur imposeacutee)

ltATTLIST biography xmlnsxlink CDATA FIXED httpwwww3org1999xlinkgt

Valeur par deacutefaut ltATTLIST web_page protocol NMTOKEN httpgt

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 32: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI32

DTD dans le deacutetail (6) Deacuteclaration dentiteacutes geacuteneacuterales

ltENTITY super supercalifragilisticexpialidociousgt

puis utilisation de ampsuper dans le doc XML

Entiteacutes de paramegravetres

ltENTITY resident ial_content address footage rooms bathsgtltENTITY rental_content rentgt

ltELEMENT apar tment ( resident ial_content rental_content ) gtltELEMENT sublet ( resident ial_content rental_content ) gt

et plein dautres choses agrave deacutecouvrir

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 33: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI33

XML namespaces

Probleacutematique Distinction entre eacuteleacutements etou attributs en provenance

de plusieurs vocabulaires Regroupement deacuteleacutements et attributs dune mecircme

application XML

Solution Associer un preacutefixe agrave chaque eacuteleacutement et attribut Moyen avec un attribut xmlnsprefixe

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 34: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI34

Namespaces utiliteacute Un document XML peut par exemple utiliser des

balises de XHTML de SVG et de MathML Comment les distinguer si elles ont un mecircme nom

ltpaintinggt lttitlegtMemory of the Garden at Ettenlttitlegt ltartistgtVincent Van Goghltartistgt ltdategtNovember 1888ltdategt ltdescriptiongt Two women look to the left A third works in her garden ltdescriptiongtltpaintinggt ltRDFgt

ltDescription about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt lttitlegt Impressionist Paintings lttitlegt ltcreatorgt Elliotte Rusty Harold ltcreatorgt ltdescriptiongt A list of famous impressionist paintings organized by painter and date ltdescriptiongt ltdategt2000-08-22ltdategt ltDescriptiongtltRDFgt

Dublin Core

RDF

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 35: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI35

Namespaces solution

ltrdfRDF xmlnsrdf=httpwwww3orgTRREC-rdf-syntaxgt

ltrdfDescription xmlnsdc=httppurlorgdc about=httpwwwcafeconlecheorgexamplesimpressionistsxmlgt ltdctitlegt Impressionist Paintings ltdctitlegt ltdccreatorgt Elliotte Rusty Harold ltdccreatorgt ltdcdescriptiongt A list of famous impressionist paintings organized by painter and date ltdcdescriptiongt ltdcdategt2000-08-22ltdcdategt

ltrdfDescriptiongtltrdfRDFgt

LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 36: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI36

Namespace par deacutefautltxml version=10gtlthtml xmlns=httpwwww3org1999xhtml xmlnsxlink=httpwwww3org1999xlinkgt

ltheadgtlttitlegtThree Namespaceslttitlegtltheadgt ltbodygt lth1 align=centergtAn Ellipse and a Rectanglelth1gt ltsvg xmlns=httpwwww3org2000svg width=12cm height=10cmgt ltellipse rx=110 ry=130 gt ltrect x=4cm y=1cm width=3cm height=6cm gt ltsvggt ltp xlinktype=simple xlinkhref=ellipseshtmlgt More about ellipses ltpgt ltp xlinktype=simple xlinkhref=rectangleshtmlgt More about rectangles ltpgt lthrgt ltpgtLast Modified May 13 2000ltpgt ltbodygtlthtmlgt

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 37: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI37

Namespaces par deacuteclaration dattribut

Possibiliteacute de ne pas speacutecifier lattribut xmlns dans toutes les occurrence dun eacuteleacutement dun document

ltATTLIST svg xmlns CDATA FIXED httpw w ww 3or g2000svggt

RAPPEL LURI ne pointe pas neacutecessairement vers un document

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 38: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI38

exemple XHTML utilisez XHTML au lieu de HTML

Un standard rigueur et donc garantie de prise en compte des balises

Un standard permet de beacuteneacuteficier des outils XML (valideur par exemple)

Seacuteparation du contenu et du rendu (cf CSS) Peut ecirctre combineacute avec dautres namespaces Il est modulaire et eXtensible

3 DTD sont disponibles Strict recommandeacute Transitional accepte certains eacuteleacutements deacutepreacutecieacutes Frameset transitional + les frames

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 39: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI39

XML-Shemas

Ccedila vient en remplacement des DTD Les DTD sont plus anciennes plus utiliseacutees Les DTD ne sont pas en XML les XML-S sont

en XML Dans les DTD on ne peut pas typer les donneacutees

dans XML-S on le peut Drsquoautres deacutefauts techniques des DTD ont eacuteteacute

combleacutes dans XML-S

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 40: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI40

XML-S exemple simplissime

ltxml version=10gt

ltxsdschema xmlnsxs=httpwwww3org2001XMLSchemagt

ltxsdelement name=fullName type=xsstringgt

ltxsdschemagt

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 41: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI41

XML-S restriction

ltxml version=10gt

ltxsdsimpleType name=myIntegergt ltxsdrestriction base=xsdintegergt ltxsdminInclusive value=10000gt ltxsdmaxInclusive value=99999gt ltxsdrestrictiongtltxsdsimpleTypegt

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 42: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI42

XML-S type complexe

ltxml version=10gt

ltxsdelement name=internationalPricegt ltxsdcomplexTypegt ltxsdsimpleContentgt ltxsdextension base=xsddecimalgt ltxsdattribute name=currency type=xsdstringgt ltxsdextensiongt ltxsdsimpleContentgt ltxsdcomplexTypegt ltxsdelementgt

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 43: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI43

XML-S type complexe

ltxml version=10gt

ltcomplexType name=PurchaseOrderTypegt ltsequencegt ltelement name=shipTo type=poUSAddressgt ltelement name=billTo type=poUSAddressgt ltelement ref=pocomment minOccurs=0gt lt-- etc --gt ltsequencegtltcomplexTypegt

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 44: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI44

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 45: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI45

XSL-T transformations

XSL = eXtensible Stylesheet Language XSL-T transformations Xpath navigation XSL-FO formatage (mise en forme)

XSL-T = application XML = templates XSL-T processor compare les eacuteleacutements et

autres sommets dun document XML avec les templates et sil y a correspondance (matching) alors il eacutecrit le template en sortie Il rend un nouveau document (eacuteventuellement XML)

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 46: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI46

XSL-T exemple minimal

ltxml version=10gt

ltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxslstylesheetgt

Racine usuelle (ou alors xsltransform)

namespace

version

Cette XSL-T ne transforme rien ellerend tous les PCDATA (sans les nomsdes eacuteleacutements et sans les attributs)

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 47: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI47

XSL-T exemple ltxml version=10gtltpeoplegt ltperson born=1912 died=1954gt ltnamegt ltfirst_namegtAlanltfirst_namegt ltlast_namegtTuringltlast_namegt ltnamegt ltprofessiongtcomputer scientistltprofessiongt ltprofessiongtmathematicianltprofessiongt ltprofessiongtcryptographerltprofessiongt ltpersongt ltperson born=1918 died=1988gt ltnamegt ltfirst_namegtRichardltfirst_namegt ltmiddle_initialgtPltmiddle_initialgt ltlast_namegtFeynmanltlast_namegt ltnamegt ltprofessiongtphysicistltprofessiongt lthobbygtPlaying the bongoeslthobbygt ltpersongtltpeoplegt

ltxml version=10 encoding=utf-8gt Alan Turing computer scientist mathematician cryptographer Richard P Feynman physicist Playing the bongoes

avec la XSL-T minimale

Pas du XML pourquoi

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 48: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI48

XSL-T processeurs Ce sont

des programmes agrave part entiegravere (xalan saxon ) des packages Java des classes php des modules de serveurs (cf Apache par exemple) ou inteacutegreacutes dans un navigateur (speacutecifier ougrave est la

stylesheet)

ltxml version=10gtltxml-stylesheet type=applicationxml href=httpwwworeillycomstylespeoplexslgtltpeoplegt

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 49: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI49

XSL-T template rules

Chaque regravegle est un eacuteleacutement xsltemplate Lattribut dappariement est un XPath (cf plus loin)

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongtltpgtA Personltpgtltxsltemplategt

ltxslstylesheetgt

entreacuteesortie

ltxml version=10 encoding=utf-8gt

ltpgtA Personltpgt

ltpgtA Personltpgt

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 50: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI50

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt Alan Turing ltpgt ltpgt Richard P Feynman ltpgt

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 51: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI51

XSL-T calcul de valeurltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt ltpgt ltxslvalue-of select=namegt ltpgt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt ltpgt ltpgt

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 52: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI52

XSL-T valeur dun noeud

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 53: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI53

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltxslapply-templates select=namegt ltxsltemplategt

ltxslstylesheetgt

ltxml version=10 encoding=utf-8gt Turing Alan

Feynman Richard

Sans ccedila il aurait aussi sortiprofessions et hobbies

ordrequelconque

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 54: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI54

XSL-T apply-templatesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=namegt ltxslvalue-of select=last_namegt ltxslvalue-of select=first_namegt ltxsltemplategt

ltxsltemplate match=persongt ltbalisegt ltxslapply-templates gt ltbalisegt ltxsltemplategt

ltxslstylesheetgt

ordrequelconque

ltxml version=10gt ltbalisegt Turing Alan computer scientist mathematician cryptographer ltbalisegt

ltbalisegt Feynman Richard physicist Playing the bongoes ltbalisegt

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 55: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI55

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltbalisegt ltxslvalue-of select=persongt ltbalisegt ltxsltemplategtltxslstylesheetgt

ltxml version=10gtltbalisegt Alan Turing computer scientist mathematician cryptographerltbalisegt

Le premier eacuteleacutementseulement est choisi

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 56: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI56

XSL-T for-eachltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

Tous les eacuteleacutements fils laquo person raquo sont traiteacutes

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 57: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI57

XSL-T appariement de noeuds

Noeud racine ltxsltemplate match=gt comportement par deacutefaut surchargeable

Appariement autre que les fils immeacutediats ex ltxsltemplate match=peoplenamegt

Appariement dun descendant de niveau quelconque ex ltxsltemplate match=peoplenamegt ex ltxsltemplate match=namegt

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 58: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI58

XSL-T attention aux bouclesltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt ltxslfor-each select=persongt ltbalisegt ltxslvalue-of select=gt ltbalisegt ltxslfor-eachgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 59: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI59

XSL-T appariement de noeuds

Appariement par ID ex ltxsltemplate match=id(toto)gt

Appariement dun commentaire ex ltxslapply-templates select=comment()gt puis ltxsltemplate match=comment()gt ltxslcommentgt ltxslvalue-of select=gt ltxslcommentgt ltxsltemplategt ou directement xslvalue-of select=comment()

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 60: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI60

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=persongt

ltxslif test=namemiddle_initialgt ltxslvalue-of select=name gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Feynam car il a une laquo middle_initial raquo

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 61: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI61

XSL-T ifltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt

ltxsltemplate match=peoplegt

ltxslif test=personnamemiddle_initialgt ltxslvalue-of select=personname gt ltxslifgt

ltxsltemplategt

ltxslstylesheetgt

renvoie le nom de Turing Pourquoi

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 62: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI62

XSL-T conflits dappariement

Regravegles deacutelimination par rapport aux preacuteseacuteances dimportations (cf xslimport xslinclude)

Puis regravegles deacutelimination par rapport aux prioriteacutes des appariements consideacutereacutes (attribut priority ou prioriteacute par deacutefaut selon des regravegles pas tregraves simples)

Sil reste encore plusieurs appariements possibles alors cest une erreur le processeur XSLT peut signaler lerreur sinon il doit choisir celui qui apparaicirct en dernier

dans la feuille de style

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 63: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI63

XSL-T pour sortir du HTML

ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt

ltxslapply-templates select=persongt

ltbodygt lthtmlgtltxsltemplategt lthtmlgt

ltheadgtlttitlegtFamous Scientistslttitlegtltheadgtltbodygt ltpgtTuring Alanltpgt ltpgtFeynman Richardltpgtltbodygtlthtmlgt

En ajoutant cette regravegle par exemple

Et cest du HTMLPourquoi

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 64: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI64

XSL-T et les attributs Par deacutefaut les attributs ne sont pas atteints

ltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransformgt ltxsltemplate match=peoplegt lthtmlgt ltheadgtlttitlegtFamous Scientistslttitlegtltheadgt ltbodygt ltdlgt ltxslapply-templatesgt ltdlgt ltbodygt lthtmlgt ltxsltemplategt ltxsltemplate match=persongt ltdtgtltxslapply-templates select=namegtltdtgt ltddgtltulgt ltligtBorn ltxslapply-templates select=borngtltligt ltligtDied ltxslapply-templates select=diedgtltligt ltulgtltddgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 65: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI65

XSL-T agrave deacutecouvrir

Plein dautres choses bien eacutevidemment(named templates numbering and sorting

output elements conditional processing iteration extension elements and functions importing other stylesheets )

Un outil tregraves puissant tregraves facile agrave utiliser Agrave vous de deacutecouvrir en pratiquant et en

lisant les nombreux ouvragessites consacreacutes

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 66: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI66

XSL-T agrave retenir

XSL-T est un langage deacuteclaratif Le processeur XSL-T parcours le fichier

XML agrave transformer Pour chaque eacuteleacutement rencontreacute il va voir

dans la feuille de style XSL-T sil y trouve un template si oui il applique ce template si non il rend la valeur par deacutefaut de

leacuteleacutement

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 67: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI67

XQuery agrave deacutecouvrir

XSL-T deacuteclaratif donc souple mais peu performant sur donneacutees volumineuses

XQuery un langage impeacuteratif un travail de longue haleine

(recommandation 10 en janvier 2007) objectif lancer des requecirctes preacutecises et

facilement compreacutehensibles sur des donneacutees XML et efficaces sur les gros volumes de donneacutees

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 68: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI68

XQuery syntaxe FLWR

FOR $truc in document(machinexml)Bidule LET $foo = document(monrepertoiremonfichierxml)balisesousb WHERE $trucquantite lt $fooelem RETURN ltMonTruc_A_Moigt FOR RETURN ltQuantite_Reellegt FOR RETURN ltQuantite_Reelle ltMonTruc_A_Moigt

Il existe aussi unesyntaxe XML

XqueryX

Elle est verbeuse etdonc pas facilementlisible mais elle a

ses avantages

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 69: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI69

XML databases

un autre domaine agrave deacutecouvrir agrave explorer

XML XSL-T XQuery en compleacutement de bases de donneacutees classiques

bases de donneacutees XML-enabled

bases de donneacutees native XML

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 70: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI70

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 71: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI71

CSS Cascading Style Sheets

CSS level 1 W3C recomm en deacutec 96 CSS level 2 W3C recomm en mai 98 CSS level 3 laquo under development raquo voir aussi CSS Mobile Profile CSS Print Profile CSS TV

Profile But afficher du XML agrave un utilisateur Inconveacutenient syntaxe non-XML (cf XSL-FO) CSS ne transforme pas le document il le

preacutesente presque comme il est en XML CSS = une liste deacuteleacutements auxquels appliquer

un style de rendu Syntaxe simple

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 72: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI72

attacher une CSS agrave un XML

ltxml version=10gtltxml-stylesheet type=textcss href=poemcssgtltPOEMgt

ltTITLEgt

ltPOEMgt

Possible aussi dans une feuille HTML avec ltLINK gt

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 73: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI73

CSS un exemple Defaults for the entire document recipe font-family New York Times New Roman serif font-size 12pt

Make the dish look like a headline dish display block font-family Helvetica Arial sans-serif font-size 20pt font-weight bold text-align center

A bulleted list ingredient display list-item list-style-position inside

Format these two items as paragraphs directions story display block margin-top 12pt margin-left 4pt

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 74: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI74

CSS seacutelecteurs

Pour tous les eacuteleacutements qui nont rien de plus preacutecis font-size large

Pour la descendance uniquement ingredients quantity font-size medium

Pour la descendance immeacutediate uniquement ingredients gt quantity font-size medium

Heacuteritage ingredients quantity font-size inherit

Selon des valeurs dattributs etc

selector property value

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 75: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI75

CSS proprieacuteteacutes daffichage

Sous forme de listes Sous formes de tableaux Reacuteglage des polices Reacuteglage de lalignement Reacuteglage des couleurs Reacuteglage de lindentation Et pleins dautres choses

Chapterfirst-letter articlefirst-line

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 76: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI76

XSL-FO en bref Cest une application XML qui permet de

repreacutesenter des informations dans des pages des blocs de texte des graphiques

Ne pas eacutecrire du XSL-FO directement mais le faire faire par du XSL-T Puis cest transformable en Tex en PDF

Deacutesormais appeleacute XSL

recomm W3C version 11 deacutec 2006

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 77: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI77

An XSLT to XSL-FO transformltxml version=10gtltxslstylesheet version=10 xmlnsxsl=httpwwww3org1999XSLTransform xmlnsfo=httpwwww3org1999XSLFormatgt ltxsltemplate match=gt ltforootgt ltfolayout-master-setgt ltfosimple-page-master margin-right=1in margin-left=1in margin-bottom=1in margin-top=1in page-width=85in page-height=11in master-name=firstgt ltforegion-bodygt ltfosimple-page-mastergt ltfolayout-master-setgt ltfopage-sequence master-reference=firstgt ltfoflow flow-name=xsl-region-bodygt ltxslapply-templatesgt ltfoflowgt ltfopage-sequencegt ltforootgt ltxsltemplategt ltxsltemplate match=dish|ingredient|directions|storygt ltfoblockgtltxslapply-templatesgtltfoblockgt ltxsltemplategtltxslstylesheetgt

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 78: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI78

XSL-FO exemple cadre

ltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt lt-- Page template goes here --gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt lt-- Page content goes here --gt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 79: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI79

XSL-FO exemple simplissimeltxml version=10 encoding=ISO-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt

ltfolayout-master-setgt ltfosimple-page-master master-name=A4gt ltforegion-body gt ltfosimple-page-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=A4gt ltfoflow flow-name=xsl-region-bodygt ltfoblockgtHello W3Schoolsltfoblockgt ltfoflowgt ltfopage-sequencegt

ltforootgt

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 80: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI80

XSL-FO exempleltxml version=10 encoding=iso-8859-1gt

ltforoot xmlnsfo=httpwwww3org1999XSLFormatgt ltfolayout-master-setgt ltfosimple-page-master master-name=first-pagegt ltforegion-body gt ltfosimple-page-mastergt ltfosimple-page-master master-name=all-pagesgt ltforegion-body gt ltfosimple-page-mastergt

ltfopage-sequence-master master-name=my-sequencegt ltfosingle-page-master-reference master-reference=first-pagegt ltforepeatable-page-master-reference master-reference=all-pagesgt ltfopage-sequence-mastergt ltfolayout-master-setgt

ltfopage-sequence master-reference=my-sequencegt ltfoflow flow-name=xsl-region-body font=72pt Timesgt ltfoblock space-before=2in space-after=2ingt First block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Second block ltfoblockgt ltfoblock break-before=page space-before=2in space-after=2ingt Third block ltfoblockgt ltfoflowgt ltfopage-sequencegtltforootgt

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 81: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI81

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 82: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI82

XPath quest-ce

Cest un langage non-XML Permet de deacutesigner un sommet par position

position relative type contenu Ils utilisent XPath XPointer XSL-T XML-S

XForms Xquery XPath repreacutesente des nombres des chaicircnes de

caractegraveres et des booleacuteens Il permet des calculs simples (arithmeacutetique

manipulation de chaicircnes )

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 83: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI83

XPath rapidement

Un document XML = un arbre Le but en extraire certains sommets Pour XPath il y a 7 types de sommets

racine du document eacuteleacutement texte attribut commentaire instruction de traitement espace de noms

Attention XPath intervient apregraves traitement des CDATA appel dentiteacutes et DTD

XPath natteint pas les deacuteclarations XML les DOCTYPE et les contenus des DTD

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 84: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI84

XPath larbre

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 85: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI85

XPath les localisations

ltxsltemplate match=gt lthtmlgtltxslapply-templatesgtlthtmlgtltxsltemplategt

racine du document

ltxsltemplate match=persongt ltxslvalue-of select=namegtltxsltemplategt

le fils name

ltxsltemplate match=comment( )gt ltigtComment Deletedltigtltxsltemplategt

les commentaires

ltxsltemplate match=persongt ltattributesgtltxslapply-templates select=gtltattributesgtltxsltemplategt

et lagrave

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 86: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI86

XPath calculs simples

ltxsltemplate match=persongt ltcenturygt ltxslvalue-of select=(born - (born mod 100)) div 100gtth ltcenturygtltxsltemplategt

il sortira quoi

ltxsltemplate match=professiongt

ltxslif test==computer scientist or =physicistgt

ltxslvalue-of select=gt

ltxslifgt

ltxsltemplategt

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 87: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI87

XPath tests simples

ltxsltemplate match=persongt ltcenturygt ltxslapply-templates select=name[middle_initial]gt ltcenturygtltxsltemplategt

Ne pas confondre avec namemiddle_initial

Agrave linverse select=name[not(middle_initial)]

preacutedicat

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 88: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI88

XLink XPointer

XLink pour faire des liens entre documents XML (comme ltA en HTML)

XPointer syntaxe non-XML pour deacutesigner des endroits dun documents XML (comme les anchor en HTML)

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 89: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI89

XLink

ltnovel xmlnsxlink= httpwwww3org1999xlink xlinktype = simple xlinkhref = ftparchiveorgpubetextetext93wizoz10txtgt

lttitlegtThe Wonderful Wizard of Ozlttitlegt ltauthorgtL Frank Baumltauthorgt ltyeargt1900ltyeargt

ltnovelgt

Permet de creacuteer des liens plus complexes (type=extended etattributs locator arc title ressource ) mais quelle seacutemantique

Permet aussi de speacutecifier le comportement (ouvertureremplacement encapsuleacute )

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 90: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI90

XPointer

Permet daller plus loin que XPath dans la deacutesignation dunfragment ou dune partie dun document XML

Donc utiliseacute par XLink

httpwwwfooorgbarxmlxpointer(articlesection[position()lt=5])

httpwwww3orgxpointer(id(bradford)li[3])

xpointer(sect1para[1]range-to(sect1para[2]))

string-range(STUDENT[3]NAME John)[3]

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 91: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI91

plan

1) Documents XML bien formeacutes et valides

2) Transformations et requecirctes

3) Preacutesentation et formatage

4) Autres

5) et en JAVA

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 92: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI92

lAPI SAX

Simple API for XML parser eacuteveacutenementiel

geacuteneacuteration deacuteveacutenements au fur et agrave mesure de la lecture dun document XML

il suffit de programmer quoi faire de ces eacuteveacutenements avantage API leacutegegravere et peu consommatrice de

meacutemoire (puisque le document nest pas chargeacute en meacutemoire)

inconveacutenient certains traitements complexes sont difficiles sils neacutecessitent une vision densemble du document

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 93: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI93

le modegravele DOM

Document Object Model structure abstraite de donneacutees pour repreacutesenter

un document XML sous forme darborescence deacutefini par le W3C contenu dans lAPI JAXP avantage permet davoir en meacutemoire une

repreacutesentation du document XML sous forme dune arborescence dobjets

inconveacutenient lent et gourmand en meacutemoire pour les gros documents

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive

Page 94: Initiation à XML › ~beaune › docnum › 2008_2009 › coursXML.pdf · 2008-10-06 · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel

6 octobre 2008 Axe ISI94

lAPI JDOM manipulation de documents XML sous forme

darborescence mais pas au standard DOM deacuteveloppeacutee indeacutependamment de SUN mais

reconnue par SUN neacuteanmoins compatible avec DOM

cohabitation facile et possible ne contient pas de parser (utiliser celui de SAX

par exemple) JDOM tire profit de particulariteacutes de Java pour

simplifier la programmation JDOM est supposeacutee ecirctre plus intuitive