Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type...

69
Axe Ingénierie des Systèmes d’Informations Gestion de documents électroniques (et le travail collaboratif assisté par ordinateur) Philippe BEAUNE [email protected] 23 octobre 2006

Transcript of Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type...

Page 1: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

Axe Ingénierie des Systèmes d’Informations

Gestion de documents électroniques

(et le travail collaboratif assisté par ordinateur)

Philippe [email protected]

23 octobre 2006

Page 2: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI2

Emploi du temps (version 2.1)● Jeudi 21 septembre 2006 matin

● Cours : généralités et CVS● Vendredi 22 septembre 2006 matin

● TP : CVS● Jeudi 28 septembre 2006 matin

● TP : CVS sous eclipse● Cours : XML 1

● Lundi 23 octobre 2006 matin● Cours : XML 2● TP : XML 1

● Jeudi 26 octobre 2006 matin● TP : XML (un autre TP suivra, en accord avec Laurent Vercouter)

● Jeudi 14 décembre 2006 matin● Conférence : aspects juridiques du document numérique (présence

active requise)

Page 3: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI3

plan● XML : généralités, exemples, syntaxe● Validation : DTD● Namespaces● Une application XML : XHTML● CSS : Cascading Style Sheets● XSL-T : Transformations● XSL-FO : Formatting Objects● XPaths● XLinks, XPointers● XML-Schemas

Page 4: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI4

XML : validation

● DTD : Document Type Definition

● DTD : permet de fournir un ensemble formel de règles pour définir la structure d'un document

● Par exemple en XHTML : un élément li ne peut se trouver qu'en fils de ul ou ol.

● Un document XML sera valide s'il est bien formé et s'il respecte sa DTD.

Page 5: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI5

XML : DTD● Une DTD est composée de déclarations● Principe : tout ce qui n'est pas autorisé est interdit● Que fait le validateur en cas d'invalidité ? Rejet ? Arrêt ?

Ignorance ? ...● Le document XML doit contenir une référence à sa DTD :

<?xml version="1.0" standalone="no"?>

<!DOCTYPE person SYSTEM "http://www.cafeconleche.org/dtds/person.dtd">

<person>  <name>    <first_name>Alan</first_name>    <last_name>Turing</last_name>  </name>  <profession>computer scientist</profession>  <profession>mathematician</profession>  <profession>cryptographer</profession></person>

Page 6: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI6

DTD : exemple

<!ELEMENT first_name (#PCDATA)><!ELEMENT last_name  (#PCDATA)><!ELEMENT profession (#PCDATA)><!ELEMENT name       (first_name, last_name)><!ELEMENT person     (name, profession*)>

Avec cette DTD, l'exemple précédent serait valide :

Dans une DTD, l'ordre des déclarations est quelconque

Les exemples suivants ne sont pas valides pour cette DTD

Page 7: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI7

DTD : exemples non valides

<person>  <profession>computer scientist</profession>  <profession>mathematician</profession>  <profession>cryptographer</profession></person>

<person>  <profession>computer scientist</profession>  <name>    <first_name>Alan</first_name>    <last_name>Turing</last_name>  </name>  <profession>mathematician</profession>  <profession>cryptographer</profession></person>

Page 8: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI8

DTD : exemples non valides<person>  <name>    <first_name>Alan</first_name>    <last_name>Turing</last_name>  </name>  <profession>mathematician</profession>  <profession>cryptographer</profession>  <publication>On Computable Numbers...</publication></person>

<person>  <name>    <first_name>Alan</first_name>    <last_name>Turing</last_name>  </name>  was a <profession>computer scientist</profession>,  a <profession>mathematician</profession>, and a  <profession>cryptographer</profession></person>

Page 9: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI9

DTD : déclarations internes

<?xml version="1.0"?>

<!DOCTYPE person [  <!ELEMENT person     (name, profession*)>  <!ELEMENT first_name (#PCDATA)>  <!ELEMENT last_name  (#PCDATA)>  <!ELEMENT profession (#PCDATA)>  <!ELEMENT name       (first_name, last_name)>]>

<person>  <name>    <first_name>Alan</first_name>    <last_name>Turing</last_name>  </name>  <profession>computer scientist</profession>  <profession>mathematician</profession>  <profession>cryptographer</profession></person>

bien fo

rmé

et valid

e

Page 10: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI10

DTD : la déclaration

<!DOCTYPE person SYSTEM "http://www.cafeconleche.org/dtds/person.dtd">

élément racine

<!DOCTYPE rss PUBLIC "­//Netscape Communications//DTD RSS 0.91//EN"              "http://my.netscape.com/publish/formats/rss­0.91.dtd">

Public ID

<!DOCTYPE person SYSTEM "/dtds/person.dtd">

<!DOCTYPE person SYSTEM "person.dtd">

annonce une Public IDavec URI de secours

Page 11: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI11

DTD : déclaration semi-interne

<!DOCTYPE person SYSTEM "name.dtd" [  <!ELEMENT profession (#PCDATA)>  <!ELEMENT person (name, profession*)>]>

internal DTD subset

external DTD subset

ATTENTION : ces 2 sous-ensemblesdoivent être compatibles et l'un ne doitpas redéfinir un élément de l'autre.Sinon : problème.Néanmoins des déclarations d'entitéspeuvent être refaites, mais ... !

Page 12: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI12

DTD : dans le détail (1)● Éléments : forme générale =

<!ELEMENT element_name content_specification>● Contenu = données textuelles uniquement :

<!ELEMENT phone_number (#PCDATA)>● Contenu = un seul fils :

<!ELEMENT fax (phone_number)>● Contenu = séquence ordonnée :

<!ELEMENT name (first_name , last_name)>● Contenu : nombre de fils :

<!ELEMENT name (f_name+ , m_name* , l_name?)>

Page 13: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI13

DTD : dans le détail (2)

● Contenu = au choix :<!ELEMENT method (params | fault | #PCDATA)>

● Contenu = combinaison :<!ELEMENT circle (center, (radius|diameter))>

● Contenu = mixte :<!ELEMENT definition (#PCDATA | term)* >

exemple :

<definition>The <term>Turing Machine</term> 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.</definition>

Page 14: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI14

DTD : dans le détail (3)

● Contenu = n'importe quoi :<!ELEMENT page ANY >

● Les attributs :<!ATTLIST image source CDATA #REQUIRED                width  CDATA #REQUIRED                height CDATA #REQUIRED                alt    CDATA #IMPLIED >

élément

obligatoire

optionneldonnée textuelle

Page 15: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI15

DTD : dans le détail (4)● Contenu des attributs :

● CDATA donnée textuelle● NMTOKEN name token● NMTOKENS un ou plusieurs name token● Enumeration ( 1 | 2 | toto )● ENTITY cf. déclaration ENTITY● ENTITIES plusieurs ENTITY● ID un nom unique dans le doc XML● IDREF l'attribut ID d'un autre élément● IDREFS plusieurs IDREF● NOTATION cf. déclaration NOTATION

Page 16: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI16

DTD : dans le détail (5)

● Attributs : complément de déclarations● #IMPLIED attribut optionnel● #REQUIRED attribut obligatoire● #FIXED (valeur imposée) :

<!ATTLIST biography    xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">

● Valeur par défaut :

<!ATTLIST web_page protocol NMTOKEN "http">

Page 17: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI17

DTD : dans le détail (6)● Déclaration d'entités générales :

<!ENTITY super "supercalifragilisticexpialidocious">

puis utilisation de &super dans le doc XML

● Entités de paramètres :

<!ENTITY % residential_content "address, footage, rooms, baths"><!ENTITY % rental_content      "rent">

<!ELEMENT apartment (%residential_content;, %rental_content;)><!ELEMENT sublet    (%residential_content;, %rental_content;)>

et plein d'autres choses à découvrir ...

Page 18: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI18

plan● XML : généralités, exemples, syntaxe● Validation : DTD● Namespaces● Une application XML : XHTML● CSS : Cascading Style Sheets● XSL-T : Transformations● XSL-FO : Formatting Objects● XPaths● XLinks, XPointers● XML-Schemas

Page 19: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI19

XML : namespaces

● Problématique :● Distinction entre élements et/ou attributs en provenance

de plusieurs vocabulaires● Regroupement d'éléments et attributs d'une même

application XML

● Solution :● Associer un préfixe à chaque élément et attribut● Moyen : avec un attribut xmlns:prefixe

Page 20: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI20

Namespaces : utilité● Un document XML peut par exemple utiliser des

balises de XHTML, de SVG et de MathML● Comment les distinguer si elles ont un même nom ?

<painting>    <title>Memory of the Garden at Etten</title>    <artist>Vincent Van Gogh</artist>    <date>November, 1888</date>    <description>      Two women look to the left. A third works in her garden.    </description></painting> <RDF>

  <Description about="http://www.cafeconleche.org/examples/impressionists.xml">    <title> Impressionist Paintings </title>    <creator> Elliotte Rusty Harold </creator>    <description>      A list of famous impressionist paiintings organized      by painter and date    </description>    <date>2000­08­22</date>  </Description></RDF>

Dublin Core

RDF

Page 21: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI21

Namespaces : solution

<rdf:RDF xmlns:rdf="http://www.w3.org/TR/REC­rdf­syntax#">

    <rdf:Description xmlns:dc="http://purl.org/dc/"       about="http://www.cafeconleche.org/examples/impressionists.xml">            <dc:title> Impressionist Paintings </dc:title>      <dc:creator> Elliotte Rusty Harold </dc:creator>      <dc:description>        A list of famous impressionist paintings organized        by painter and date      </dc:description>      <dc:date>2000­08­22</dc:date>

    </rdf:Description>  </rdf:RDF>

L'URI ne pointe pas nécessairement vers un document

Page 22: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI22

Namespace par défaut

<?xml version="1.0"?><html xmlns="http://www.w3.org/1999/xhtml"      xmlns:xlink="http://www.w3.org/1999/xlink">

  <head><title>Three Namespaces</title></head>  <body>    <h1 align="center">An Ellipse and a Rectangle</h1>    <svg xmlns="http://www.w3.org/2000/svg"         width="12cm" height="10cm">      <ellipse rx="110" ry="130" />      <rect x="4cm" y="1cm" width="3cm" height="6cm" />    </svg>    <p xlink:type="simple" xlink:href="ellipses.html">      More about ellipses    </p>    <p xlink:type="simple" xlink:href="rectangles.html">      More about rectangles    </p>    <hr/>    <p>Last Modified May 13, 2000</p>  </body></html>

Page 23: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI23

Namespaces : par déclaration d'attribut

● Possibilité de ne pas spécifier l'attribut xmlns dans tous les éléments svg d'un document

<!ATTLIST svg xmlns CDATA #FIXED "http://www.w3.org/2000/">

RAPPEL :L'URI ne pointe pas nécessairement vers un document

Page 24: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI24

plan● XML : généralités, exemples, syntaxe● Validation : DTD● Namespaces● Une application XML : XHTML● CSS : Cascading Style Sheets● XSL-T : Transformations● XSL-FO : Formatting Objects● XPaths● XLinks, XPointers● XML-Schemas

Page 25: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI25

de HTML à XHTML (1)

● Pour que le document soit bien formé :● Ajouter les balises fermantes qui manquent (</p>, </li>,

...) et corriger les éléments vides● Supprimer les entrelacements ● Quoter les valeurs d'attributs (<p align="center">)● Ajouter une valeur à certains attributs booléens

raccourcis● Remplacer les & et < par des appels d'entités● Vérifier qu'il n'y a qu'un seul élément racine <html>● Corriger les commentaires (<!-- blabla -->)● Spécifier l'encodage (in déclaration xml)

Page 26: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI26

de HTML à XHTML (2)

● Pour que le document soit valide :● Ajouter la déclaration DOCTYPE● Changer tous les éléments et attributs en minuscules● Enlever les éléments non standards● L'élément racine doit être html● Etc.

● 3 DTD sont disponibles :● Strict : recommandé● Transitional : accepte certains éléments dépréciés● Frameset : transitional + les frames

Page 27: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI27

XHTML : quel rendu à l'écran ?

● Les navigateurs ne peuvent pas afficher n'importe quel document XML (problème de sémantique)

● Pour cela : les Cascading Style Sheet (CSS)● Dans le XHTML : une instruction de traitement ; par exemple

<?xml­stylesheet href="http://www.cafeconleche.org/style/titus.css"                 type="text/css" media="tv, projection, print"?>

href et type : obligatoires media : screen | tty | tv | projection |handled | print | braille | aural | all

Autres pseudo-attributs : charset et alternate/title

Page 28: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI28

XHTML : pourquoi ?

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

● Un standard : permet de bénéficier des outils XML (valideur par exemple)

● Séparation du contenu et du rendu (CSS)● Peut être combiné avec d'autres namespaces● Il est modulaire, et eXtensible ...

Page 29: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI29

plan● XML : généralités, exemples, syntaxe● Validation : DTD● Namespaces● Une application XML : XHTML● CSS : Cascading Style Sheets● XSL-T : Transformations● XSL-FO : Formatting Objects● XPaths● XLinks, XPointers● XML-Schemas

Page 30: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI30

CSS

● But : afficher du XML à un utilisateur● Inconvénient : syntaxe non-XML (cf. XSL-FO)● CSS ne transforme pas le document : il le

présente presque comme il est en XML● CSS = une liste d'éléments auxquels appliquer

un style de rendu● Syntaxe simple

Page 31: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI31

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}

Page 32: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI32

CSS : sélecteurs

● Pour tous les éléments qui n'ont rien de plus précis :* {font­size: large}

● Pour la descendance uniquement :ingredients quantity {font­size: medium}

● Pour la descendance immédiate uniquement :ingredients > quantity {font­size: medium}

● Héritage :ingredients quantity {font­size: inherit}

● Selon des valeurs d'attributs, etc.

Page 33: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI33

CSS : propriétés d'affichage

● Sous forme de listes● Sous formes de tableaux● Réglage des polices● Réglage de l'alignement● Réglage des couleurs● Réglage de l'indentation● Et pleins d'autres choses ...

Page 34: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI34

plan● XML : généralités, exemples, syntaxe● Validation : DTD● Namespaces● Une application XML : XHTML● CSS : Cascading Style Sheets● XSL-T : Transformations● XSL-FO : Formatting Objects● XPaths● XLinks, XPointers● XML-Schemas

Page 35: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI35

XSL-T : transformations

● XSL = eXtensible Stylesheet Language● XSL-T : transformations● XSL-FO : formattage d'objets

● XSL-T = application XML = {templates}● XSL-T processor : compare les éléments et autres

sommets d'un document XML, avec les templates ; et s'il y a correspondance (matching) alors il écrit le template en sortie. Il rend un nouveau document (éventuellement XML).

Page 36: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI36

XSL-T : exemple minimal

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

</xsl:stylesheet>

Racine usuelle (ou alors xsl:transform)

namespace

version

Cette XSL-T ne transforme rien : ellerend tous les éléments (sans attributs)

Page 37: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI37

XSL-T : exemple <?xml version="1.0"?><people>  <person born="1912" died="1954">    <name>      <first_name>Alan</first_name>      <last_name>Turing</last_name>    </name>    <profession>computer scientist</profession>    <profession>mathematician</profession>    <profession>cryptographer</profession>  </person>  <person born="1918" died="1988">    <name>      <first_name>Richard</first_name>      <middle_initial>P</middle_initial>      <last_name>Feynman</last_name>    </name>    <profession>physicist</profession>    <hobby>Playing the bongoes</hobby>  </person></people>

<?xml version="1.0" encoding="utf­8"?>      Alan      Turing    computer scientist    mathematician    cryptographer      Richard      P      Feynman    physicist    Playing the bongoes

avec la XSL-T minimale

Pas du XML ! pourquoi ?

Page 38: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI38

XSL-T : processeurs

● Ce sont soit :● Des programmes à part entière (xalan, saxon, ...)● Des packages Java● Du coté serveur (cf. Apache par exemple)● Ou dans un navigateur : spécifier où est la stylesheet :

<?xml version="1.0"?><?xml­stylesheet type="application/xml"                 href="http://www.oreilly.com/styles/people.xsl"?><people>  ...

Page 39: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI39

XSL-T : template rules

● Chaque règle est un élément xsl:template● L'attribut d'appariement est un Xpath (cf plus loin)

<?xml version="1.0"?><xsl:stylesheet version="1.0"                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="person"><p>A Person</p></xsl:template>

</xsl:stylesheet>

entréesortie

<?xml version="1.0" encoding="utf­8"?>

 <p>A Person</p>

 <p>A Person</p>

Page 40: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI40

XSL-T : calcul de valeur

<?xml version="1.0"?><xsl:stylesheet version="1.0"                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="person">    <p>      <xsl:value­of select="name"/>    </p>  </xsl:template>

</xsl:stylesheet>

<?xml version="1.0" encoding="utf­8"?>  <p>      Alan      Turing  </p>  <p>      Richard      P      Feynman  </p>

Page 41: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI41

XSL-T : calcul de valeur

<?xml version="1.0"?><xsl:stylesheet version="1.0"                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="people">    <p>      <xsl:value­of select="name"/>    </p>  </xsl:template>

</xsl:stylesheet>

<?xml version="1.0" encoding="utf­8"?>  <p>  </p>

?

Page 42: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI42

XSL-T : valeur d'un noeud

Page 43: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI43

XSL-T : apply-templates<?xml version="1.0"?><xsl:stylesheet version="1.0"                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="name">    <xsl:value­of select="last_name"/>,    <xsl:value­of select="first_name"/>  </xsl:template>

  <xsl:template match="person">    <xsl:apply­templates select="name"/>  </xsl:template>

</xsl:stylesheet>

<?xml version="1.0" encoding="utf­8"?>  Turing,    Alan

  Feynman,    Richard

Sans ça il aurait aussi sortiprofessions, et hobbies

ordrequelconque

Page 44: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI44

XSL-T : apply-templates<?xml version="1.0"?><xsl:stylesheet version="1.0"                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="name">    <xsl:value­of select="last_name"/>,    <xsl:value­of select="first_name"/>  </xsl:template>

  <xsl:template match="person">    <balise>       <xsl:apply­templates />    </balise>  </xsl:template>

</xsl:stylesheet>

ordrequelconque

<?xml version="1.0"?>        <balise>                Turing,                Alan                computer scientist                mathematician                cryptographer        </balise>

        <balise>                Feynman,                Richard                physicist                Playing the bongoes        </balise>

Page 45: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI45

XSL-T : for-each<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">   <xsl:template match="people">      <balise>         <xsl:value­of select="person"/>      </balise>   </xsl:template></xsl:stylesheet>

<?xml version="1.0"?><balise>        Alan        Turing    computer scientist    mathematician    cryptographer</balise>

Le premier élémentseulement est choisi

Page 46: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI46

XSL-T : for-each<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">   <xsl:template match="people">      <xsl:for­each select="person">         <balise>            <xsl:value­of select="."/>         </balise>      </xsl:for­each>   </xsl:template></xsl:stylesheet>

Tous les éléments fils « person » sont traités

Page 47: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI47

XSL-T : appariement de noeuds

● Noeud racine : <xsl:template match="/">● comportement par défaut surchargeable

● Appariement autre que les fils immédiats :● ex : <xsl:template match="/people/*/name">

● Appariement d'un descendant de niveau quelconque :● ex : <xsl:template match="/people//name">● ex : <xsl:template match="//name">

Page 48: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI48

XSL-T : appariement de noeuds

● Appariement par ID :● ex : <xsl:template match="id('toto')">

● Appariement d'un commentaire :● ex : <xsl:apply­templates select="comment()">● puis : <xsl:template match="comment()">          <xsl:comment>             <xsl:value­of select="."/>          </xsl:comment>        </xsl:template>● ou directement xsl:value­of select="comment()"

Page 49: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI49

XSL-T : pour sortir du HTML

<xsl:template match="people">  <html>    <head><title>Famous Scientists</title></head>    <body>

      <xsl:apply­templates select="person"/>

    </body>  </html></xsl:template> <html>

<head><title>Famous Scientists</title></head><body>  <p>Turing,    Alan</p>  <p>Feynman,    Richard</p></body></html>

En ajoutant cette règle :

Et c'est du HTML.Pourquoi ?

Page 50: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI50

XSL-T : et les attributs ?● Par défaut les attributs ne sont pas atteints

<?xml version="1.0"?><xsl:stylesheet version="1.0"                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  <xsl:template match="people">    <html>      <head><title>Famous Scientists</title></head>      <body>        <dl>          <xsl:apply­templates/>        </dl>      </body>    </html>  </xsl:template>  <xsl:template match="person">    <dt><xsl:apply­templates select="name"/></dt>    <dd><ul>      <li>Born: <xsl:apply­templates select="@born"/></li>      <li>Died: <xsl:apply­templates select="@died"/></li>    </ul></dd>  </xsl:template></xsl:stylesheet>

Page 51: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI51

XSL-T : à découvrir

● Plein d'autres choses, bien évidemment(named templates, numbering and sorting

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

● Un outil très puissant, très facile à utiliser

● À vous de découvrir ...

Page 52: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI52

plan● XML : généralités, exemples, syntaxe● Validation : DTD● Namespaces● Une application XML : XHTML● CSS : Cascading Style Sheets● XSL-T : Transformations● XSL-FO : Formatting Objects● XPaths● XLinks, XPointers● XML-Schemas

Page 53: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI53

XSL-FO : en bref

● C'est une application XML qui permet de représenter des informations dans des pages, des blocs de texte, des graphiques, ...

● Ne pas écrire du XSL-FO directement, mais le faire faire par du XSL-T ! Puis c'est transformable en Tex, en PDF, ... (cf. T.P.)

Page 54: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI54

An XSLT to XSL-FO transform

<?xml version="1.0"?><xsl:stylesheet version="1.0"                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format">  <xsl:template match="/">    <fo:root>      <fo:layout­master­set>        <fo:simple­page­master margin­right="1in"  margin­left="1in"                               margin­bottom="1in" margin­top="1in"                               page­width="8.5in"  page­height="11in"                               master­name="first">          <fo:region­body/>        </fo:simple­page­master>      </fo:layout­master­set>      <fo:page­sequence master­reference="first">        <fo:flow flow­name="xsl­region­body">          <xsl:apply­templates/>        </fo:flow>      </fo:page­sequence>    </fo:root>  </xsl:template>  <xsl:template match="dish|ingredient|directions|story">    <fo:block><xsl:apply­templates/></fo:block>  </xsl:template></xsl:stylesheet>

Page 55: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI55

plan● XML : généralités, exemples, syntaxe● Validation : DTD● Namespaces● Une application XML : XHTML● CSS : Cascading Style Sheets● XSL-T : Transformations● XSL-FO : Formatting Objects● XPaths● XLinks, XPointers● XML-Schemas

Page 56: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI56

XPath : qu'est-ce ?

● C'est un langage non-XML● Permet de désigner un sommet par position,

postion relative, type, contenu, ...● Ils utilisent XPath : XPointer, XSL-T, XML-S,

XForms, ...● XPath représente des nombres, des chaines de

caractères et des booléens● Il permet des calculs simples (arithmétique,

manipulation de chaines, ...)

Page 57: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI57

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, élément, texte, attribut, commentaire, instruction de traitement, espace de noms

● Attention : XPath intervient après instantiation des CDATA, appel d'entités et déclarations.

● XPath n'atteint pas les déclarations XML, les DOCTYPE et les contenus des DTD

Page 58: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI58

XPath : les localisations

<xsl:template match="/">  <html><xsl:apply­templates/></html></xsl:template>

racine du document

<xsl:template match="person">    <xsl:value­of select="name"/></xsl:template>

le fils name

<xsl:template match="comment( )">  <i>Comment Deleted</i></xsl:template>

les commentaires

<xsl:template match="person">  <attributes><xsl:apply­templates select="@*"/></attributes></xsl:template>

et là ??

Page 59: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI59

XPath : calculs simples

<xsl:template match="person">  <century>    <xsl:value­of select="(@born ­ (@born mod 100)) div 100"/>th  </century></xsl:template>

il sortira quoi ??

<xsl:template match="profession">

  <xsl:if test=".='computer scientist' or .='physicist'">

    <xsl:value­of select="."/>

  </xsl:if>

</xsl:template>

Page 60: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI60

XPath : tests simples

<xsl:template match="person">  <century>    <xsl:apply­templates select="name[middle_initial]"/>  </century></xsl:template>

Ne pas confondre avec "name/middle_initial"

Page 61: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI61

plan● XML : généralités, exemples, syntaxe● Validation : DTD● Namespaces● Une application XML : XHTML● CSS : Cascading Style Sheets● XSL-T : Transformations● XSL-FO : Formatting Objects● XPaths● XLinks, XPointers● XML-Schemas

Page 62: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI62

XLinks, XPointers

● XLinks : pour faire des liens entre documents XML (comme <A ... en HTML)

● XPointers : syntaxe non-XML pour désigner des endroits d'un documents XML (à découvrir)

Page 63: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI63

XLinks

<novel xmlns:xlink= "http://www.w3.org/1999/xlink"       xlink:type = "simple"       xlink:href = "ftp://archive.org/pub/etext/etext93/wizoz10.txt">

  <title>The Wonderful Wizard of Oz</title>  <author>L. Frank Baum</author>  <year>1900</year>

</novel>

Permet de créer des liens plus complexes (extended, locator,arc, title, ressource) ; mais quelle sémantique ?

Permet aussi de spécifier le comportement (ouverture,remplacement, encapsulé, ... )

Page 64: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI64

plan● XML : généralités, exemples, syntaxe● Validation : DTD● Namespaces● Une application XML : XHTML● CSS : Cascading Style Sheets● XSL-T : Transformations● XSL-FO : Formatting Objects● XPaths● XLinks, XPointers● XML-Schemas

Page 65: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI65

XML-Shemas

● Ça vient en remplacement des DTD● Les DTD sont plus anciennes, plus utilisées● Les DTD ne sont pas en XML, les XML-S

sont en XML● Dans les DTD on ne peut pas typer les données,

dans XML-S on le peut● D’autres défauts techniques des DTD ont été

comblés dans XML-S

Page 66: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI66

XML-S : exemple simplissime

<?xml version="1.0"?>

<xsd:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

 <xsd:element name="fullName" type="xs:string"/>

</xsd:schema>

Page 67: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI67

XML-S : restriction

<?xml version="1.0"?>

<xsd:simpleType name="myInteger">  <xsd:restriction base="xsd:integer">    <xsd:minInclusive value="10000"/>    <xsd:maxInclusive value="99999"/>  </xsd:restriction></xsd:simpleType>

Page 68: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI68

XML-S : type complexe

<?xml version="1.0"?>

<xsd:element name="internationalPrice">  <xsd:complexType>   <xsd:simpleContent>    <xsd:extension base="xsd:decimal">     <xsd:attribute name="currency" type="xsd:string"/>    </xsd:extension>   </xsd:simpleContent>  </xsd:complexType> </xsd:element>

Page 69: Gestion de documents numériquesbeaune/docnum/2006_2007/... · XML : validation DTD : Document Type Definition DTD : permet de fournir un ensemble formel de règles pour définir

23 octobre 2006 Axe ISI69

XML-S : type complexe

<?xml version="1.0"?>

<complexType name="PurchaseOrderType">  <sequence>   <element name="shipTo"    type="po:USAddress"/>   <element name="billTo"    type="po:USAddress"/>   <element ref="po:comment" minOccurs="0"/>   <!­­ etc. ­­>  </sequence>  <!­­ etc. ­­> </complexType>