Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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