Laurent Romary DIST CNRS Laurent'Romaryloria'fr Susanne Alt ATILF CNRS saltatilf'fr - PowerPoint PPT Presentation

1 / 87
About This Presentation
Title:

Laurent Romary DIST CNRS Laurent'Romaryloria'fr Susanne Alt ATILF CNRS saltatilf'fr

Description:

(1) est-ce que tu connais des outils standards qui donnent une API ... annot es : XML (outils d velopp s ailleurs) Master TAL 'Normalisation' Explication de ... – PowerPoint PPT presentation

Number of Views:165
Avg rating:3.0/5.0
Slides: 88
Provided by: gordo57
Category:

less

Transcript and Presenter's Notes

Title: Laurent Romary DIST CNRS Laurent'Romaryloria'fr Susanne Alt ATILF CNRS saltatilf'fr


1
Laurent Romary (DIST CNRS)Laurent.Romary_at_loria.
frSusanne Alt (ATILF CNRS)salt_at_atilf.fr
Normalisation lexiques et corpus
2
INTRODUCTION
3
Hello,apres avoir chipote avec VerbNet, je
suis en train de rentrer dans le lard de FrameNet
anglais, j'ai qq questions (1) est-ce que
tu connais des outils standards qui donnent une
API pour manipuler les donnees de FrameNet dans
un programme java ? e.g. je voudrais eviter de
me colletiner l'ecriture d'un parser XML (...).
J'ai trouve l'API de Stanford mais il parsent que
les fichiers d'annotation, pas les fichiers de
LUs (Lexical Units) (2) En travaillant sur les
bases de donnees lexicales developpees ici, on se
rend compte qu'on a un mal de chien a préserver
la consistance des données. Seuls les auteurs de
l'"ontologie" semblent pouvoir s'y retrouver
(...) Est-ce que tu connais la methode de
developpement utilisee par les FrameNet boys ???
ont-ils fait des papiers la dessus ?
Un jeudi sur terre le 16/11/2005
4
FrameNet "lexical units"
entrée verbale
 frame 
définition
participants
constructions syntaxiques
  • Lexique 9.000 entrées

FrameNet  abandon  http//www.icsi.berkeley.edu/
framenet/
5
FrameNet "fichiers d'annotation"
  • Corpus 130.000 phrases d'exemples annotées

6
FrameNet distribution
  • DocsDTDs.tgz Contains README.pdf, the Book in PDF
    and HTML, and the DTDs
  • HTMLfiles.tgz Complete set of HTML files frame
    descriptions, LU annotations, lexical entry
    reports, and indexes to them (LUIndex.html,
    frameIndex.html, etc.).
  • basicXML.tgz Complete set of XML files for FN
    database, including frame descriptions, frame
    relations, metarelations, LU annotation, lexical
    entry reports. Does not include part-of-speech
    labels on annotated sentences.
  • luPosXML.tgz Annotated sentences in XML with
    part-of-speech labels. Does not include frame
    information or lexical entry reports.
  • DiffsXML.tgz XML files representing changes in
    frames, frame relations and lexical units since
    Release 1.1
  • OWLfiles.tgz Contains a representation in OWL of
    the frames and frame relations only, as of July
    2004.
  • format XML (norme) DTDs (propriétaires)
  • Base de données XML (pas d'outils d'accès)
  • Phrases annotées XML (outils développés
    ailleurs)

7

Explication de texte
  • Masses de données
  • corpus, dictionnaires, lexiques, ensembles de
    règles
  • diffusées librement, sous licence, par des
    agences
  • Mais
  • autant de formats que de ressources
  • Donc
  • problèmes de documentation
  • problèmes des outils d'accès
  • problèmes de maintenance, de mise à jour, de
    partage

8
Hello,apres avoir chipote avec VerbNet, je
suis en train de rentrer dans le lard de FrameNet
anglais, j'ai qq questions (1) est-ce que
tu connais des outils standards qui donnent une
API pour manipuler les donnees de FrameNet dans
un programme java ? e.g. je voudrais eviter de
me colletiner l'ecriture d'un parser XML (...).
J'ai trouve l'API de Stanford mais il parsent que
les fichiers d'annotation, pas les fichiers de
LUs (Lexical Units) (2) En travaillant sur les
bases de donnees lexicales developpees ici, on se
rend compte qu'on a un mal de chien a préserver
la consistance des données. Seuls les auteurs de
l'"ontologie" semblent pouvoir s'y retrouver
(...) Est-ce que tu connais la methode de
developpement utilisee par les FrameNet boys ???
ont-ils fait des papiers la dessus ?
En résumé
données
outils
formats
mise à jour
documentation
9
Standards pour...
  • Documents semi-structurés
  • XML, DTD, XSL
  • Données linguistiques
  • Unicode, codes Langues, relaxNG
  • Données textuelles
  • Text Encoding Interchange (TEI)
  • Linguistic Annotation Framework (LAF)
  • Données lexicales
  • Multext, Genelex, Lexical Markup Framework (LMF)
  • Métadonnées
  • OLAC, INTERA, TEI

10
Languages semi-structurésSusanne Alt (ATILF
CNRS)
Cours I
11
Documents semi-structurés
  • Quel format d'échange pour des données
    linguistiques ?
  • BD relationnelle, texte, balisages
    semi-structurés
  • Langages de balisage (SGML, HTML, XML)
  • Généalogie et philosophie
  • XML
  • syntaxe
  • sémantique (DTDs, RelaxNG)
  • Traiter des documents XML
  • recherche XPath
  • édition XSLT

12
Voilà à quoi ça ressemble HTML
lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
4.0//EN"gt ltHTMLgt ltheadgt lttitlegtContactlt/titl
egt lt/headgt ltbodygt lth1gtSusanne
Salmon-Altlt/h1gt ltpgt ltbgtalt_at_loria.frlt/bgt
ltbrgt tél 03 83 59 20 35ltbrgt équipe
Langue et Dialogueltbrgt ltigtLorialt/igt
lt/pgt lt/bodygt lt/HTMLgt
13
Voilà à quoi ça ressemble XML
lt?xml version"1.0" encoding"iso-8859-1"?gt lt!DOCT
YPE MEMBRE SYSTEM "http///MEMBRE.dtd"gt lt!-- Un
membre du LORIA --gt ltMEMBRE TYPE"IE"
ID"M28"gt ltNOMgt Salmon-Alt lt/NOMgt ltPRENOMgt
Susanne lt/PRENOMgt ltMELgt alt_at_loria.fr
lt/MELgt ltTELgt 03 83 59 20 35 lt/TELgt ltFAXgt 03 83
41 30 79 lt/FAXgt ltEQUIPE LAB"LORIA"gt Langue
et Dialogue lt/EQUIPEgt lt/MEMBREgt
14
Voilà à quoi ça ressemble XSL
lt?xml version"1.0" encoding"iso-8859-1"?gt ltxsls
tylesheet version"1.0" xmlnsxsl"http//www.w3.o
rg/1999/XSL/Transform"gt ltxsltemplate
match"/"gt ltHTMLgt ltHEADgt ltTITLEgtMon
répertoirelt/TITLEgt lt/HEADgt ltBODYgt
ltxslapply-templates/gt lt/BODYgt lt/HTMLgt lt/xsltemp
lategt ltxsltemplate match"MEMBRE"gt
ltPgt ltxslapply-templates select"NOM"/gt ltxsltex
tgt - lt/xsltextgt ltxslapply-templates
select"EQUIPE"/gt lt/Pgt lt/xsltemplategt lt/xslstyl
esheetgt
ltHTMLgt ltHEADgt ltTITLEgtMon reacutepertoirelt/TITLE
gt lt/HEADgt ltBODYgt ltPgt Salmon-Alt - Langue et
Dialogue lt/Pgt lt/BODYgt lt/HTMLgt
15
Langages de description
  •  Valeur ajoutée  aux données brutes
  • principe de base ltbalisegt mon texte lt/balisegt
  • balises structurant les données
  • type dinfos ajoutées
  • informations sur laspect ( présentationelles )
  • informations sur la structure ( logiques )
  • informations sur le fond ( sémantiques )
  • gt traitements par navigateurs (HTML) ou XSL
    (XML)
  • avantages
  • séparation des données des méta-données
  • documents  semi-structurés 
  • HTML, SGML, XML

16
Pour quoi faire ?
  • Modéliser des données (semi-)structurées
  • textes littéraires
  • bases de données bibliographiques
  • dictionnaires
  • paramètres de configuration
  • échange de données entre applications
  • cartographie des gènes
  • Publier les données sur le web (HTML, XML/XSL,
    XHTML)
  • Séparer les structures sémantiques de la
    présentation (SGML, XML)
  • Intégrer des données hétérogènes (XML)

17
Pourquoi vous ny échapperez pas...
  • Intégration croissante dans une large gamme
    dapplications
  • Usage industriel et applicatif
  • édition, communication, web, ...
  • bases de données
  • intégration de données multimédia
  • Internet (catalogue de produits et E-Commerce)
  • Usage scientifique et monde de la recherche
  • cartographie du génome humain
  • codage de données scientifiques (chimie, maths,
    ...)
  • représentation des connaissances (logique, IA,
    ...)
  • linguistique computationnelle (dictionnaires,
    traduction, ...)
  • Indépendance
  • de toute langue, toute plate-forme et de tout
    fabricant de logiciel

18
Vue générale
  • Standard Generalized Markup Language
  • Hyper Text Markup Language
  • eXtended Markup Language

19
XML ? SGML
  • SGML (Standard Generalized Markup Language)
  • norme ISO 8879 (1986)
  • langage de définition pour balises (DTD)
  • XML
  • sous-ensemble de SGML
  • moins complexe
  • spécification XML 36 pages
  • norme SGML 250 pages
  • structure logique de documents électroniques
  • portail vers le Web

20
XML ? HTML
  • HTML (HyperText Markup Language, 1990)
  • application SGML
  • ensemble de balises figées
  • afficher texte, liens hypertextes et images
    (pages Web)
  • XML
  • pas de balises prédéfinies
  • permet de spécifier des balises en fonction des
    données
  •  META-langage 
  • centré sur la structuration du contenu (et non
    pas la forme)
  • Actuellement
  • HTML est devenu une application XML (XHTML)

21
Initiation à XML
Cours I
22
Qu'est-ce que c'est donc ?
  • Une recommandation du W3C
  • http//www.w3.org/XML/
  • Un langage de description extensible
  •  méta-langage  qui permet de définir dautres
    langages
  • ? HTML, ? SGML)
  • Une simplification de la norme SGML
  • Centré sur les structures
  • logiques et sémantiques
  • ? présentationnelles

23
Chaîne de traitement des données
Édition
Transformation
Consultation
Conception
XML Données
XPath/ XSL/XSLT Filtres
XHTML "Vues"
DTD/ Schéma Structures
24
Voilà à quoi ça ressemble XML
lt?xml version"1.0" encoding"iso-8859-1"?gt lt!DOCT
YPE MEMBRE SYSTEM "http///MEMBRE.dtd"gt lt!-- Un
membre du LORIA --gt ltMEMBRE TYPE"IE"
ID"M28"gt ltLOGIN ID"alt"/gt ltNOMgt Salmon-Alt
lt/NOMgt ltPRENOMgt Susanne lt/PRENOMgt ltMELgt
alt_at_loria.fr lt/MELgt ltTELgt 03 83 59 20 35
lt/TELgt ltFAXgt 03 83 41 30 79 lt/FAXgt ltEQUIPE
LAB"LORIA"gt Langue et Dialogue lt/EQUIPEgt lt/ME
MBREgt
25
Les éléments et leur contenu
lt?xml version"1.0" encoding"iso-8859-1"?gt lt!DOCT
YPE MEMBRE SYSTEM "http///MEMBRE.dtd"gt lt!-- Un
membre du LORIA --gt ltMEMBRE TYPE"IE"
ID"M28"gt ltLOGIN ID"alt"/gt ltNOMgt Salmon-Alt
lt/NOMgt ltPRENOMgt Susanne lt/PRENOMgt ltMELgt
alt_at_loria.fr lt/MELgt ltTELgt 03 83 59 20 35
lt/TELgt ltFAXgt 03 83 41 30 79 lt/FAXgt ltEQUIPE
LAB"LORIA"gt Langue et Dialogue lt/EQUIPEgt lt/ME
MBREgt
balise ouvrante
élément vide
élément
contenu textuel
balise fermante
26
Les éléments et leurs attributs
lt?xml version"1.0" encoding"iso-8859-1"?gt lt!DOCT
YPE MEMBRE SYSTEM "http///MEMBRE.dtd"gt lt!-- Un
membre du LORIA --gt ltMEMBRE TYPE"IE"
ID"M28"gt ltLOGIN ID"alt"/gt ltNOMgt Salmon-Alt
lt/NOMgt ltPRENOMgt Susanne lt/PRENOMgt ltMELgt
alt_at_loria.fr lt/MELgt ltTELgt 03 83 59 20 35
lt/TELgt ltFAXgt 03 83 41 30 79 lt/FAXgt ltEQUIPE
LAB"LORIA"gt Langue et Dialogue lt/EQUIPEgt lt/ME
MBREgt
valeur d'attribut
nom d'attribut
27
Autres éléments
lt?xml version"1.0" encoding"iso-8859-1"?gt lt!DOCT
YPE MEMBRE SYSTEM "http///MEMBRE.dtd"gt lt!-- Un
membre du LORIA --gt ltMEMBRE TYPE"IE"
ID"M28"gt ltLOGIN ID"alt"/gt ltNOMgt Salmon-Alt
lt/NOMgt ltPRENOMgt Susanne lt/PRENOMgt ltMELgt
alt_at_loria.fr lt/MELgt ltTELgt 03 83 59 20 35
lt/TELgt ltFAXgt 03 83 41 30 79 lt/FAXgt ltEQUIPE
LAB"LORIA"gt Langue et Dialogue lt/EQUIPEgt lt/ME
MBREgt
déclaration XML
déclaration DTD
commentaire
28
Et voici... le jeu des 7 fautes !
lt?xml version"1.0" encoding"iso-8895-1"gt lt?xml-s
tylesheet type"text/xsl" href"C\susanne\corpus\
ozkan\annotation\stylesheets\comptage.xsl"?gt lt!DOC
TYPE membre SYSTEM "C//dialogue.dtd"gt ltdialoguegt
lt!-- ceci est un jeu pour vous réveiller
-gt ltheadgt ltcoding_infogt ltauthorgtJulien
Jacquotlt/authorgt ltdategt00-03-11lt/dategt lt/codi
ng_infogt ltdialogue_infogt ltcouple
instructor"Elise" manipulator"Daniel"
strategy_manipulator"prudent"gtC11lt/couplegt ltfi
guregtballonlt/figuregt lt/dialogue_infogt lt/headgt
ltbodygt ltverbal_action id who"I"gt ltseggtqui
est ce qui fait ça làltseggt ltcomment
type"speech_act"gtquestion introduitelt/commentgt
lt/verbal_actiongt ltverbal_action id"xsd2"
who"M"gt ltseggtah, moi je fais
rienlt/seggt ltcomment typespeech_actgtinformation
en réponselt/commentgt lt/verbal_actiongt lt/bodygt
29
Solution
lt?xml version"1.0" encoding"iso-8895-1"?gt lt?xml-
stylesheet type"text/xsl" href"C\susanne\corpus
\ozkan\annotation\stylesheets\comptage.xsl"?gt lt!DO
CTYPE dialogue SYSTEM "C//dialogue.dtd"gt ltdialog
uegt lt!-- ceci est un jeu pour vous réveiller
--gt ltheadgt ltcoding_infogt ltauthorgtJulien
Jacquotlt/authorgt ltdategt00-03-11lt/dategt lt/codi
ng_infogt ltdialogue_infogt ltcouple
instructor"Elise" manipulator"Daniel"
strategy_manipulator"prudent"gtC11lt/couplegt ltfi
guregtballonlt/figuregt lt/dialogue_infogt lt/headgt
ltbodygt ltverbal_action id"xsd1"
who"I"gt ltseggtqui est ce qui fait ça
làlt/seggt ltcomment type"speech_act"gtquestion
introduitelt/commentgt lt/verbal_actiongt ltverbal_
action id"xsd2" who"M"gt ltseggtah, moi je
fais rienlt/seggt ltcomment type"speech_act"gtinfo
rmation en réponselt/commentgt lt/verbal_actiongt lt
/bodygt lt/dialoguegt
30
DTDs
Cours I
31
Chaîne de traitement des données
Édition
Transformation
Consultation
Conception
XML Données
XPath/ XSL/XSLT Filtres
XHTML "Vues"
DTD/ Schéma Structures
32
Documents bien-formés
  • Syntaxe correcte
  • balises fermés ?
  • guillements autour des attributs ?
  • etc.
  • jeu précédent document mal-formé
  • Mais sémantique non vérifiable
  • nom des éléments ?
  • enchâssement ?
  • valeurs des attributs ? etc.
  • jeu précédent pas de moyen pour vérifier, car
    pas de
  • Document Type Definition (DTD)

33
Documents valides rôle de la DTD
  • Valide bien-formé conforme à une DTD
  • Définition dune DTD
  • contraintes sur les noms des éléments, des
    attributs
  • description du contenu des éléments
  • enchâssement déléments, texte, ...
  • attachement dattributs à un élément donné
  • type des attributs
  • facultatifs, obligatoire
  • valeur des attributs
  • numériques, alpha-numériques, liste fermée
  • Principes de bases approche SGML
    traditionnelle, mais
  • DTD optionnelle en XML et syntaxe simplifiée
  •  production en valide et distribution en
    bien-formé 

34
Trois questions sur la DTD
1. Comment connaître la structure de mes
documents ?
3. Comment partager la structure de mes
documents avec mes collègues ?
2. Comment décrire la structure de mes documents
?
35
1. La structure des documents
  • Analyse attentive des données à traiter !!!
  • Mettre à jour les règles générales sur la
    structuration des données...
  • composantes nécessaires ? éléments ?
  • propriétés pertinentes ? attributs ?
  • valeurs spécifiques de certains attributs ?
  • type des attributs ?
  • enchâssement des éléments ? séquences déléments ?

36
2. Ecrire une DTD
  • lt!ELEMENT MEMBRE
  • (LOGIN, NOM, PRENOM?, MEL, TEL, FAX, EQUIPE)gt
  • lt!ELEMENT LOGIN EMPTYgt
  • lt!ATTLIST LOGIN
  • ID ID REQUIREDgt
  • lt!ELEMENT NOM (PCDATA)gt
  • lt!ELEMENT PRENOM (PCDATA)gt
  • lt!ELEMENT MEL( PCDATA)gt
  • lt!ELEMENT TEL (PCDATA)gt
  • lt!ELEMENT FAX (PCDATA)gt
  • lt!ELEMENT EQUIPE (PCDATA)gt
  • lt!ATTLIST EQUIPE
  • LAB CDATA REQUIREDgt

37
Déclaration des éléments
  • lt!ELEMENT MEMBRE
  • (LOGIN, NOM, PRENOM?, MEL, TEL, FAX, EQUIPE)gt
  • lt!ELEMENT LOGIN EMPTYgt
  • lt!ATTLIST LOGIN
  • ID ID REQUIREDgt
  • lt!ELEMENT NOM (PCDATA)gt
  • lt!ELEMENT PRENOM (PCDATA)gt
  • lt!ELEMENT MEL( PCDATA)gt
  • lt!ELEMENT TEL (PCDATA)gt
  • lt!ELEMENT FAX (PCDATA)gt
  • lt!ELEMENT EQUIPE (PCDATA)gt
  • lt!ATTLIST EQUIPE
  • LAB CDATA REQUIREDgt

nom de lélément
mot-clé ELEMENT
38
Contenu des éléments
  • lt!ELEMENT MEMBRE
  • (LOGIN, NOM, PRENOM?, MEL, TEL, FAX, EQUIPE)gt
  • lt!ELEMENT LOGIN EMPTY gt
  • lt!ATTLIST LOGIN
  • ID ID REQUIREDgt
  • lt!ELEMENT NOM (PCDATA)gt
  • lt!ELEMENT PRENOM (PCDATA)gt
  • lt!ELEMENT MEL (PCDATA)gt
  • lt!ELEMENT TEL (PCDATA)gt
  • lt!ELEMENT FAX (PCDATA)gt
  • lt!ELEMENT EQUIPE (PCDATA)gt
  • lt!ATTLIST EQUIPE
  • LAB CDATA REQUIREDgt

éléments enfants
élément vide
données textuelles
39
Séquençage des éléments enfants
  • lt!ELEMENT MEMBRE
  • (LOGIN, NOM, PRENOM?, MEL, TEL, FAX, EQUIPE)gt

gt 0
gt 1
1
lt 1
OU exclusif
factorisation
lt!ELEMENT PAYMENT (CASHCREDIT_CARD)gt
lt!ELEMENT ADRESSE (RUE,(VILLECODE_POSTAL))gt
40
Déclaration des attributs
  • lt!ELEMENT MEMBRE
  • (LOGIN, NOM, PRENOM?, MEL, TEL, FAX, EQUIPE)gt
  • lt!ELEMENT LOGIN EMPTYgt
  • lt!ATTLIST LOGIN
  • ID ID REQUIREDgt
  • lt!ELEMENT NOM (PCDATA)gt
  • lt!ELEMENT PRENOM (PCDATA)gt
  • lt!ELEMENT MEL( PCDATA)gt
  • lt!ELEMENT TEL (PCDATA)gt
  • lt!ELEMENT FAX (PCDATA)gt
  • lt!ELEMENT EQUIPE (PCDATA)gt
  • lt!ATTLIST EQUIPE
  • LAB CDATA REQUIREDgt

mot-clé ATTLIST
nom de lélément
nom de lattribut
type de lattribut
valeur implicite
41
Types dattributs
42
Plusieurs attributs
lt!ATTLIST EQUIPE LAB CDATA REQUIREDgt
lt!ATTLIST EQUIPE Date CDATA IMPLIEDgt
lt!ATTLIST EQUIPE LAB CDATA REQUIRED Date
CDATA IMPLIED gt
43
attributs présence et valeurs
  • ??? lt!ATTLIST LOGIN IDENT ID FIXED "M"gt

44
3. Utilisation et partage d'une DTD
  • DTD interne au document XML
  • DTD déclarée au début du document XML (entre
    crochets)
  • avantage proximité
  • inconvénient partage de la même DTD entre
    plusieurs documents XML

déclaration doctype
lt!DOCTYPE MEMBRE lt!ELEMENT MEMBRE
gt gt ltMEMBRE TYPE"IE" ID"M28"gt lt/MEMBREgt
déclaration DTD
document XML
45
3. Utilisation et partage d'une DTD
  • DTD externe au document XML
  • DTD déclarée dans un fichier à part
  • avantage partage de la même DTD pour plusieurs
    docs XML
  • inconvénient rétro-compatibilité

lt!ELEMENT MEMBRE gt
déclaration DTD (fichier .dtd)
  • lt!DOCTYPE MEMBRE SYSTEM "http///MEMBRE.dtd"gt
  • ltMEMBRE TYPE"IE" ID"M28"gt
  • lt/MEMBREgt

46
Application
  • Ecrire une DTD pour une entrée de dictionnaire
  • ltpgtltbgtAccomodationlt/bgt,ltigtf.lt/igt, faculté de
    lil humain permettant de maintenir une vision
    nette des objets quelle que soit leur distance.
    ltBRgt
  • ltbgtltIgtEn stéréoscopielt/bgtlt/igt, faculté des yeux
    humains dobtenir la vision stéréoscopique par
    superposition de deux images.lt/pgt

Accomodation,f., faculté de loeil humain
permettant de maintenir une vision nette des
objets quelle que soit leur distance. En
stéréoscopie, faculté des yeux humains dobtenir
la vision stéréoscopique par superposition de
deux images.
47
Exemple d'une DTD simple
  • lt?xml version1.0 encodingiso-8859-1?gt
  • lt!DOCTYPE dico
  • lt!-- Coucou --gt
  • lt!ELEMENT dico (article)gt
  • lt!ELEMENT article (vedette, gramm, sens)gt
  • lt!ELEMENT vedette (PCDATA)gt
  • lt!ELEMENT gramm (categorie, (genre nombre
    transitivité))gt
  • lt!ELEMENT genre (PCDATA)gt
  • lt!ELEMENT nombre (PCDATA)gt
  • lt!ELEMENT transitivité (PCDATA)gt
  • lt!ELEMENT sens (domaine?, def, exemple, sens)gt
  • lt!ATTLIST sens n CDATA IMPLIEDgt
  • gt

48
Version TEI
Text Encoding Initiative
  • lt?xml version"1.0" encoding"iso-8859-1"?gt
  • lt!DOCTYPE entry SYSTEM "http///entry.dtd"gt
  • lt!-- A dictionary entry --gt
  • ltentrygt
  • ltformgt
  • ltorthgtaccomodationlt/orthgt
  • lt/formgt
  • ltgramGrpgt
  • ltgengtflt/gengt
  • lt/gramGrpgt
  • ltsensegt
  • ltdefgtFaculté de loeuil humain permettant de
    maintenir une vision nette des objets quelle que
    soit leur distance.lt/defgt
  • lt/sensegt
  • ltsensegt
  • ltusg typedomgtEn STEREOSCOPIElt/usggt,
  • ltdefgtfaculté des yeux humains dobtenir la
    vision stéréoscopique par superposition de deux
    images.lt/defgt
  • lt/sensegt
  • lt/entrygt

49
Fragments de la DTD TEI
  • lt!ELEMENT entry (form, grmGrp?, sense)gt
  • lt!ELEMENT form (orth, phon)gt
  • lt!ELEMENT orth (PCDATA)gt
  • lt!ATTLIST orth lang (fren) REQUIREDgt
  • lt!ELEMENT sense (def usg etym eg tr)gt
  • lt!ATTLIST sense n CDATA IMPLIEDgt

50
Représentation arborescente
51
XPath
Cours I
52
Chaîne de traitement des données
Édition
Transformation
Consultation
Conception
XML Données
XPath/ XSL/XSLT Filtres
XHTML "Vues"
DTD/ Schéma Structures
53
XPath
  • XML Path Langage 1.0
  • recommandation du W3C (1999)
  • permet l'adressage de partie de documents XML
  • recherche, sélection et extraction de fragments
    XML
  • basé sur
  • noms d'éléments
  • noms/valeurs d'attributs
  • chemins dans le document
  • positions

54
L'Adressage avec les XPath
  • Adressage absolu
  • A partir d'une URI/URL
  • id(M28), here(), root()
  • Adressage relatif en suivant des axes
  • ancestor, parent
  • descendant, child
  • preceding-sibling, following-sibling

55
Morphalou c'est un arbre...
La seule vue que lon doit avoir dun document
XML !
lexicalDatabase
lexicalEntry
lexicalEntry
lexicalEntry
inflectionGroup
inflectionGroup
inflection
inflection
56
Les motifs (Xpath)
  • / (racine du document)
  • element
  • /sous-element
  • /sous-element1(premier sous-élément)
  • /sous-element/sous-sous-element
  • //sous-elements
  • . (moi-même)
  • (tous les éléments)
  • _at_attribut
  • element/_at_ (tous les attributs de lélément)
  • elementsous-element (tous les éléments
    possédant ce sous-élément)
  • element_at_attribut"valeur" (tous les éléments
    dont lattribut à telle valeur)

57
XPath - Exemples
  • /
  • /lexicalDatabase
  • /lexicalDatabase/lexicalEntry
  • /lexicalDatabase/lexicalEntry130
  • /lexicalDatabase/lexicalEntry_at_lemma"abigotir"
  • //lexicalEntry_at_lemma"abigotir"
  • //lexicalEntry_at_lemma"aba"/inflectionGroup

58
XPath - Exercices
  • Combien y-t-il d'entrées dans "Morphalou" ?
  • Extraire les adverbes ?
  • Combien de pluriels appartenant à des noms ?
  • Extraire les noms masculins ?
  • Extraire tous les verbes qui ont des participes
    présent ?
  • Extraire tous les lemmes dérivés de la racine
    "abandon" ?

59
XPath - Solutions
  • count(//lexicalEntry)
  • //lexicalEntry_at_grammaticalCategory"adverb"
  • count(//lexicalEntry_at_grammaticalCategory"commonN
    oun"/inflectionGroup/inflection_at_grammaticalNumbe
    r"plural")
  • //lexicalEntry_at_grammaticalCategory"commonNoun"
    and _at_grammaticalGender"masculine"
  • //inflection_at_grammaticalMood"participle" and
    _at_grammaticalTense"present"/ancestorlexicalEntr
    y
  • //lexicalEntrystarts-with (_at_lemma,"abandon")

60
XSL
Cours I
61
Plus concrètement...
62
Principe de base
  • Cher moteur XSL, quand tu rencontres la racine du
    document, fait quelque chose
  • Cher moteur XSL, si tu rencontres lélément
    annuaire, fait telle chose
  • Cher moteur XSL, si tu rencontres lélément
    membre, fait telle autre chose
  • Et ainsi de suite ...
  • Une feuille de style XSL est une suite de règles
    ou de  templates .

63
Exemple de structure XSL
  • lt?xml version"1.0"?gt
  • ltxslstylesheet xmlnsxsl"http//www.w3.org/TR/WD
    -xsl"gt
  • ltxsltemplate match"/"gt
  • lt/xsltemplategt
  • ltxsltemplate match"annuaire"gt
  • lt/xsltemplategt
  • lt/xslstylesheetgt

64
Structure des règles (template)
  • Chaque règle possède deux parties
  • Un motif (XPath) qui identifie le/les nud(s) XML
    du document qui est/sont concerné(s) par la règle
    et sur le(s) quel(s) il faut appliquer une action
  • Une action qui effectue la transformation et/ou
    spécifie les caractéristiques de la présentation

ltxsltemplate matchmotifgt action lt/xsltemp
lategt
65
Structure d une règle (exemple)
ltxsltemplate matchannuairegt
ltxslapply-templates/gt lt/xsltemplategt
Cher moteur XSL, quand tu parses un document XML
et que tu tombes sur un élément ltannuairegt ,
utilise cette règle
Va vers chacun de mes fils ( ltentetegt et ltmembregt
) et applique les règles qui les concernent
66
Les actions
  • Ecrire quelque chose...
  • contenu des éléments
  • ltxslvalue-of select"."/gt
  • ltxslvalue-of select"sous-element"/gt
  • contenu dattributs
  • ltxslvalue-of select"_at_attribut"/gt
  • du texte
  • ltxsltextgt mon texte avec espaces lt/xsltextgt
  • Appeler dautres règles
  • ltxslapply-templates/gt
  • ltxslapply-templates select"motif"/gt

67
Objectifs
  • Définir un langage de feuilles de style pour XML
  • Transformation de documents
  • Sélection
  • Filtrage
  • Présentation de documents
  • HTML, XHTML
  • RTF, Word, PS, PDF, ...

68
Lexemple d annuaire
ltannuairegt ltentetegt ltresponsablegtRichardlt/re
sponsablegt ltdateRevisiongt23 avril
2000lt/dateRevisiongt lt/entetegt ltmembregt
ltprenomgtLaurentlt/prenomgtltnomgtRomarylt/nomgt
lttel type"fax"gt03.83.41.30.79lt/telgt lttel
type"bureau"gt03.83.59.20.37lt/telgt ltadressegt
ltruegtCampus Scientifique, BP 239lt/ruegt
ltvillegtVandoeuvre lès Nancylt/villegt
ltcodePostalgt54506lt/codePostalgt
ltpaysgtFRANCElt/paysgt lt/adressegt
ltdépartement href"departements.xmlinformatique"/
gt lt/membregt lt/annuairegt
69
Mise en uvre
lt?xml version"1.0" encoding"UTF-8"?gt ltxslstyles
heet xmlnsxsl"http//www.w3.org/1999/XSL/Transfo
rm" version"1.0"gt ltxsltemplate
match"/"gt ltxslapply-templates/gt
lt/xsltemplategt
ltxsltemplate match"annuaire"gt
ltxslapply-templates/gt lt/xsltemplategt
ltxsltemplate match"entete"gt
ltxslvalue-of select"responsable"/gt
lt/xsltemplategt ltxsltemplate
match"membre"gt ltxslvalue-of
select"nom"/gt lt/xsltemplategt lt/xslstyle
sheetgt
70
Par défaut...
  • Pour les éléments appelés par
  • ltxslapply-templates/gt
  • mais sans
  • ltxsltemplate match"..." gt
  • le contenu est produit en sortie...
  • Donc pour ceux qui ne nous intéressent pas
    (sans action)
  • ne pas les appeler par leur pères... ou
  • supprimer laction et
  • supprimer les règles concernant les fils
  • Exemple
  • ltentêtegt précédent...

71
Factorisation des motifs
  • Pour éviter les répétitions inutiles de règles,
    on peut factoriser les motifs sur une seule règle

ltxsltemplate match"nom prenom"gt ltBgt
ltxslvalue-of select"."/gt lt/Bgt lt/xsltemplategt
Cette règle s'applique à la fois aux éléments
ltnomgt et ltprenomgt
72
Contrôler le parcours du document
  • Pour l'instant, nous avons vu que XSL parcourt le
    document dans l'ordre de ses éléments
  • annuaire, entete, responsable, , membre, prenom,
    nom, tel, adresse, etc.
  • de la racine vers les feuilles de l'arbre
  • Comment contrôler l'ordre dans lequel les choses
    peuvent être effectuées ?
  • Exemples
  • codePostal avant ville
  • nom avant prenom

73
Contrôler le parcours du document
  • ltxslapply-templates select"motif"gt
  • Sans select, apply-templates traite les éléments
    dans l'ordre où ils apparaissent dans le document
  • L'attribut select permet d'indiquer au moteur XSL
    de traiter uniquement les éléments qui vont
    correspondre au motif.
  • On contrôle l'ordre maintenant !...

74
Exemple
... ltxsltemplate match"membre"gt
ltxslapply-templates select"nom"/gt
ltxslapply-templates select"prenom"/gt
ltxslapply-templates select"tel"/gt
ltxslapply-templates select"departement"/gt
ltxslapply-templates select"adresse"/gt lt/xsltemp
lategt ...
75
Les boucles (for-each)
  • Pour chaque élément qui correspond à un motif,
    fait l'action
  • Exemple la liste des membres

ltxslfor-each select"motif"gt
action lt/xslfor-eachgt
76
Les boucles exemple
... ltxsltemplate match"annuaire"gt
ltxslapply-templates select"entete"/gt ltTABLE
BORDER"1" WIDTH"100"gt ltxslfor-each
select"membre"gt ltTRgt ltxslapply-templates/gt
lt/TRgt lt/xslfor-eachgt lt/TABLEgt lt/xsltemplat
egt ...
77
Le test avec xslif
... ltxsltemplate match"entete"gt lt!-- si pas
de date, écrire 3 ? --gt ltxslif
test"not(dateRevision)"gt ltxsltextgt ???
lt/xsltextgt lt/xslifgt ...
lt/xsltemplategt ...
ltxslif test"position()2"gt...
ltxslif test"_at_id"gt...
78
Le tri avec xslsort
  • Le tri est effectué en utilisant des éléments
    xslsort dans les xslapply-templates ou
    xslfor-each
  • clé primaire, secondaire, etc...

... ltxsltemplate match"annuaire"gt
ltxslapply-templates select"membre"gt
ltxslsort select"nom" order"ascending"/gt
lt/xslapply-templatesgt lt/xsltemplategt ...
79
Choix multiple xslchoose
... ltxslchoosegt ltxslwhen test"quelque-chose
"gt action lt/xslwhengt ltxslwhen
test"autre-chose"gt action lt/xslwhengt
... ltxslotherwisegt action
lt/xslotherwisegt lt/xslchoosegt ...
80
Les variables
  • Mettre/stocker des valeurs ou résultats de select
    dans des variables
  • ltxslvariable name"toto" select"text()"/gt
  • référence toto
  • ltxslvalue-of select"toto"/gt
  • Ecrite une fois ! Lue plusieurs fois !
  • on ne peut pas modifier la valeur d'une variable
  • Portée d'une variable
  • dans l'élément qui contient sa déclaration

81
Appel explicite à une règle
  • Une règle (un template) peut avoir un nom
  • on peut alors l'invoquer explicitement
  • des  fonctions  en quelque sorte...

... ltxsltemplate match"dateRevision"gt
ltxslcall-template name"formatDate"/gt
lt/xsltemplategt ltxsltemplate
name"formatDate"gt lt!-- Code XSL ici pour
formater la date --gt lt/xsltemplategt ...
82
Passage de paramètres à une règle
  • Déclaration d'un ou plusieurs paramètres

ltxsltemplate name"ecrireNom"gt ltxslparam
name"prenom"/gt ltxslparam name"nom"
select"Dupont"/gt ltfont color"red"gt...lt/fontgt
lt/xsltemplategt
  • Passer les paramètres à l'invocation d'une règle

ltxsltemplate match"membre"gt
ltxslcall-template name"ecrireNom"gt
ltxslwith-param name"prenom" select"Prenom"/gt
ltxslwith-param name"nom" select"Nom"/gt
lt/xslcall-templategt lt/xsltemplategt
83
Format de sortie
  • ltxsloutputgt
  • Indiquer à XSL ce qu'il est en train de générer
  • HTML ltp/gt en ltpgtlt/pgt
  • XML
  • texte
  • Codage des caractères, fermeture des balises, ...

ltxslstylesheet gt ltxsloutput method"html"
encoding"UTF-8"/gt ltxsltemplate
/gt lt/xslstylesheetgt
84
Générer du XML
  • lt?xml version"1.0"gt
  • ltxslstylesheet version"1.0" xmlnsxsl"http//ww
    w.w3.org/1999/XSL/Transform" xmlnsfo"http//www.
    w3.org/1999/XSL/Format"gt
  • ltxsloutput method"xml" encoding"iso-8859-1"/gt
  • ltxsltemplate match"..."gt
  • ltxslelement name"MonElement"gt
  • ltxslattribute name"MonAttribut"gt
  • ltxslvalue-of select"A"/gt
  • lt/xslattributegt
  • ltxslvalue-of select"E"/gt
  • lt/xslelementgt
  • lt/xsltemplategt

ltMonElement MonAttribut"A"gt E lt/MonElementgt
85
Manipulation chaînes de caractères
  • Fonctions classiques pour chaînes de caractère

string concat(string, string) string
substring-before(string, string) string
substring-after(string, string) string
substring(string, number, numbre?) number
string-length(string?) string normalize-space(stri
ng?) string translate(string, string, string)
boolean starts-with(string, string) boolean
contains(string, string)
ltxslvalue-of select"substring-after( text() ,
'_')"/gt ltxslwhen test"contains(Name, 'e')"gt...
86
Exemples chaînes de caractères
  • concat("13","/","09","/","1999")
  • substring-before("13/09/1999","/")
  • substring-after("13/09/1999","09")
  • substring("13/09/1999",7,3)
  • substring("13/09/1999",0,3)
  • translate("cosmos 1999","csm","CSM")
  • starts-with("cosmos 1999", "star")
  • starts-with("cosmos 1999", "co")
  • contains("cosmos 1999", "kirk")
  • contains("cosmos 1999", "os")

"13/09/1999" "13" "/1999" "1999" "13" "CoSMoS
1999" false true false true
87
Réutiliser des feuilles de style
  • ltxslimportgt
  • Idem mais avec des priorités supérieures au reste
    des règles de la feuille de style
  • ltxslincludegt
  • Macro remplace l'élément include avec le
    contenu de la feuille de style incorporée
  • ltxslstylesheet gt
  • ltxslinclude href"fds2.xsl"gt
  • lt/xslstylesheetgt

A
ordre B gt C gt A
Write a Comment
User Comments (0)
About PowerShow.com