-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path05-traitement.html
464 lines (248 loc) · 19 KB
/
05-traitement.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
<!DOCTYPE HTML>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Programme</title><link href="themes/remark-dark.css" rel="stylesheet" media="all" type="text/css"></head><body><textarea id="source">
title: Travailler avec la TEI
description: Emmanuel Château-Dutier et Nicolas Sauret, mars 2019
theme: themes/remark-dark.css
name: inverse
layout: true
class: inverse
---
name: index
class: center middle
# 05 – Travailler avec la TEI
### EDN6101 - Édition critique avec la TEI | 17 mars 2019
.footnote[[Répertoire GitHub](https://github.com/publicarchitectura/initiationTEI) | [Programme](00-programme.html)]
![test](images/logo.svg)
---
template: inverse
class: center middle
# Introduction
???
En ayant recours à la Text Encoding Initiative (TEI), on adopte le .red[principal standard informatique] actuellement employé dans le .red[domaine de l’édition critique] numérique. La TEI fournit tout à la fois un cadre de travail pour traiter et analyser les sources, et enregistrer le résultat de l’activité scientifique qui aura été menée. Toutefois, les fichiers sources XML-TEI ne sont pas directement destinés à la consultation. La TEI constitue plutôt .red[un format pivot à partir duquel on produit diverses "manifestations" du texte en fonction des besoins] et des contextes de lecture (pages xhtml, fichiers epub, pdf, api, etc.). Le manque d’outils adaptés, faciles d’emploi, pour le traitement, l’analyse et la publication de ces fichiers est souvent considéré comme un des principaux freins à l’utilisation de la TEI.
Du fait de l’utilisation courante de la TEI dans des projets de recherche, plusieurs solutions pour la publication d’édition critiques électroniques ont été développées ces dernières années, soit sous la forme de chaînes éditoriales propres soit sous la forme de logiciels libres ou open source. Il convient de choisir une solution de publication adaptée à nos besoins mais qui puisse être également maintenue dans la durée. Plusieurs solutions s’offrent à vous qui peuvent plus ou moins bien répondre aux besoins de votre projet, ou s’inscrire dans la politique générale de votre institution. Dans tous les cas, il n’y a pas de solution miracle, et le choix d’un outil résulte d’un arbitrage entre la complexité technique et l’étendue des fonctionnalités attendues.
---
name: index
layout: false
## Sommaire
* [Quelques questions pratiques](#part1)
* [Comment traiter ses données ?](#part2)
* [Tirer parti de l’outillage TEI ?](#part3)
---
template: inverse
class: center middle
name: part1
# Quelques questions pratiques
---
# Quel éditeur XML choisir ?
## N’importe quel éditeur de texte
### XMLMind XML Editor
### Pourquoi Oxygen ?
---
# Questions courantes
## Qui doit encoder ?
## Un schéma est-il figé dans le marbre ?
## Pourquoi faut-il produire une documentation ?
## Comment publier mes données ?
---
template: inverse
class: center middle
name: part2
# Comment traiter ses données .red[XML-TEI] ?
---
# La TEI comme format pivot
## Sorties HTML
## Sorties EPub, Kindle, etc.
## Sorties papier (PDF, LateX, etc.)
---
# Le stockage des données
### Stockage des fichiers à plat (Flat File Storage)
### Bases de données relationnelles et orientées objet
### Le stockage natif des données XML
???
# Le stockage des données
Travailler avec des données XML nécessite de pouvoir effectuer trois types d’opérations distinctes :
* ajouter de l’information dans l’entrepôt,
* chercher et retrouver l’information dans l’entrepôt,
* et mettre à jour l’information contenue dans l’entrepôt.
Plusieurs solutions pour les bases de données XML ont été proposés parmi lesquelles :
* le stockage de fichiers à plat,
* l’utilisation de bases de données relationnelles,
* le stockage natif des données XML comme dans des bases de données XML natives ou d’autres systèmes de gestion.
---
# Le Stockage des fichiers à plat
(Flat File Storage)
### Solution la plus simple
### L’entité principale est le document
### Simple système de fichier
### Efficace et peu coûteux
### Recherches dans le document prohibitives
???
# Stockage des fichiers à plat (Flat File Storage)
C’est la solution la plus simple, le document complet constitue l’entité principale, les structures internes ne jouant aucun rôle. Cette solution peut être implémentée avec n’importe quel système de fichiers. Si le stockage est efficace et peu coûteux, d’autres opérations comme la recherche qui requièrent un accès à la structure interne du document peuvent devenir prohibitives.
Le stockage à plat n’est pas le plus approprié lorsque la recherche est fréquente car le niveau de granularité du stockage est le document entier et non pas son contenu.
---
# Bases de données relationnelles (et orientées objet)
### Fonctionnalités d’indexation
### Nécessitent une conversion dans un modèle relationnel (jointures coûteuses)
### Proposition de bases de données orientées objet pour refléter les structures imbriquées (passé)
### Certains SGBDR proposent des APIs XML (XQuery, XPath)
???
# Bases de données relationnelles et orientées objet
Les données XML peuvent être stockées dans des bases de données relationnelles. Elles peuvent ainsi bénéficier des fonctionnalités d’indexation, de transaction et d’optimisation des requêtes habituellement offertes par ces systèmes. Cependant, comme les données XML sont des données semi-structurées, elles nécessitent une conversion dans un modèle de données relationnelles. Compte-tenu des différences significatives inhérentes aux modèles relationnels et aux structures imbriquées des données semi-structurées, ces conversions impliquent généralement des jointures coûteuses pour le traitement des requêtes. L’utilisation de bases de données relationnelles orientées objet a été proposée pour refléter les structures imbriquées des données semi-structurées afin de réduire les redondances et ces jointures.
---
# Le stockage natif des données XML
### Préservent la structure physique des documents XML (éléments, attributs, entités)
### Stockent des documents sans déclaration préalable du schéma
### Permettent d’accéder aux documents à partir des API spécifiques à XML (XPath, XQuery)
cf. [http://www.rpbourret.com/xml/ProdsNative.htm](http://www.rpbourret.com.html/ProdsNative.htm)
---
# Le stockage natif des données XML
### Préservent la structure physique des documents XML (éléments, attributs, entités)
### Stockent des documents sans déclaration préalable du schéma
### Permettent d’accéder aux documents à partir des API spécifiques à XML (XPath, XQuery)
cf. [http://www.rpbourret.com/xml/ProdsNative.htm](http://www.rpbourret.com.html/ProdsNative.htm)
???
Conçus spécialement pour gérer des données XML, les systèmes natifs ont l’avantage de ne pas nécessiter d’opérations de conversion. Les techniques de stockage et de traitement des requêtes adoptées par les bases de données XML sont habituellement plus efficientes que celles basées sur le stockage de fichiers à plats et les bases de données relationnelles.
Plusieurs langages de requêtes ont été proposés pour manipuler des données XML (XML-QL, XML-GL, Quilt, XPath et XQuery). Le principal langage de requête pour XML qui ait été standardisé est XQuery. Il repose sur l’utilisation d’expressions de chemins XPath qui adressent des ensembles des parties spécifiques des documents XML.
---
# La transformation de XML
## des langages de transformation de XML ([XSLT](https://www.w3.org/TR/xslt-30/), XSL-FO)
### capables de générer d’autres formats à partir du document source
## des langages de requêtes ([XQuery](https://www.w3.org/XML/Query/))
???
# La transformation
Plusieurs langages de transformation ou de requête pour les données XML peuvent être particulièrement utiles pour exploiter des données XML-TEI.
L’utilisation de XML comme format pivot en vue d’une publication de sources textuelles dans un autre format est un cas typique d’utilisation de cette technologie. Plusieurs langages de transformation de segments XML ont été proposés, notamment XSLT et XSL-FO qui reposent tous deux sur le langage XPath.
Si XSLT constitue une solution très efficace pour passer d’un format XML donné à un autre, comme par exemple XHTML, les processeurs disponibles pour réaliser cette transformation sont limités à la version 1.0 du langage dans l’environnement courant LAMP (Linux Apache PHP). Les processeurs XSLT 2.0 et XQuery sont généralement incompatibles avec cet environnement, c’est une des raisons pour lesquelles la plupart des applications pour travailler avec des sources XML sont développées en Java pour pleinement tirer parti des possibilités de ces langages et du modèle de données.
---
# Processus de transformation .red[XSL]
![](../images/xsltProcessing.svg)
???
Ce schéma présente le processus à l’œuvre lorsque l’on associe une feuille de style et un document source.
Un programme XSLT spécifie une sortie à produire à partir d’un segment ou d’un fichier XML, si ce segment existe dans le document fourni en entrée et répond à certains critères.
Le résultat est une fonction de l’entrée.
---
# Que peut faire XSLT ?
![](../images/whatXsltCanDo.png)
---
# Les bases de données XML natives
Elles indexent les documents XML sur la base de leur structure.
Facilitent l’exécution de requêtes sur les fichiers
* [Basex](http://basex.org/)
* [eXist-DB](http://exist-db.org/)
* [Marklogic](http://www.marklogic.com/)
Synops.red[X] [http://synopsx.github.io](http://synopsx.github.io)
---
# Arguments en faveur de l’utilisation d’une base de données XML
### Orientation document qui facilite le développement d’application
### Accès à la structure et aux données facilité
### Fonctionnalités qui s’inscrivent dans le respect des normes et l’implémentation des standards XML (XSL, XProc, XForms, XLink, etc.)
---
# Stratégies de publication
## Produire un site statique avec des transformations XSL
Le résultat de la transformation est placée sur le serveur sous forme d’un site web statique
## Produire un site dynamique avec des pipelines de traitement
Des environnements tels que Cocoon permettent de développer des chaînes de traitement qui peuvent être exécutées dynamiquement côté serveur
## Produire un site dynamique avec une base de données XML native
Une base de données XML native permet l’exécution dynamique des requêtes. Particulièrement adapté pour des contenus sujets à des modifications ou les requêtes non pré-définies
---
# Hébergement des données
## Le problème de l’environnement
* Beaucoup d’applications en environnement Java
* Pas de solutions d’hébergement standard
## La grille de service de la TGIR Huma-Num
[http://www.huma-num.fr/service/grille-de-services](http://www.huma-num.fr/service/grille-de-services)
* Solutions d’hébergement pour les projets du domaine de l’Enseignement supérieur et de la recherche
* Habitués à gérer ce genre de demandes
* Besoin de se conformer à des [bonnes pratiques](http://www.huma-num.fr/ressources/guide-des-bonnes-pratiques-numeriques)
* Archivage pérenne
???
Comment les créateurs de données en TEI dans des petites institutions peuvent-ils publier et archiver leurs données, et disposer d’un support technique pour leurs projets ?
Une question d’échelle Intérêt de la publication de regroupement de textes Mutualisation et économie.
Question de la vulnérabilité des ressources produites. Choix de technologies libres et ouvertes pour la publication qui garantissent l’indépendance à l’égard d’une infrastructure commerciale. Le médium numérique requiert néanmoins une attention particulière à sa conservation. La production d’une édition électronique nécessite d’envisager sa maintenance dans le temps sans quoi elle risque de devenir obsolète ou de ne plus être disponible.
Grille de service du TGIR HumaNum offre un hébergement web adapté pour accueillir des servlets java. Environnement sécurisé et robuste fournit dans le cadre d’un partenariat avec le centre de calcul IN2P3 à Lyon. Solution semble-t-il favorisée par le CNRS pour les projets en Digital Humanities car elle permet une mutualisation au niveau de l’infrastructure serveur, virtualisation, maintenance, montée en charge, performance, évolutivité en fonction des besoins, etc. Cette solution a en outre l’avantage de la gratuité pour les projets ANR et réalisés dans le cadre de Labex.
Outre l’hébergement web, l’offre de la TGIR HumaNum un ensemble de services qui peuvent s’avérer nécessaires. Pérennisation des données, et archivage à long terme réalisé en partenariat avec le XXXX de Montpellier. Serveur de document, accès SSH, etc.
---
name: part3
template: inverse
class: center middle
# Tirer parti de l’outillage TEI
???
Lorsque des documents sont encodés en XML, il devient relativement aisé de les manipuler et de les transformer en utilisant différents langages informatiques tels que XSLT ou XQuery. Tout en étant extrêmement puissants, ces langages peuvent apparaître complexes et difficiles à maîtriser. Aussi, la Text Encoding Initiative met à disposition plusieurs outils pour faciliter la transformer des documents TEI en différents formats, sans nécessairement avoir besoin de connaissances approfondies en programmation dans ces langages.
Les XSL Stylesheets développées par Sebastian Rahtz, sont un ensemble de transformations XSLT qui sert notamment à produire les Guidelines et le site web de la TEI. Celles-ci sont également présentes au sein du Framework TEI offert par l’éditeur XML oXygen. Nous vous proposons ici une rapide introduction pour apprendre à les utiliser afin de pouvoir produire des sorties dans différents formats (xhtml, LateX, pdf, docx, etc.) à partir de vos documents TEI.
---
# .red[CSS] Cascading stylesheets
[https://www.w3.org/Style/CSS/Overview.en.html](https://www.w3.org/Style/CSS/Overview.en.html)
---
# TEI stylesheets
Framework de transformations XML-TEI
Sebastian Rhatz (Oxford)
[https://github.com/TEIC/Stylesheets](https://github.com/TEIC/Stylesheets)
---
# Les XSL Stylesheets
.red[XSLT Stylesheets] = une bibliothèque de XSL (XSLT et XSL-FO) pour transformer des documents TEI vers toute sorte de formats
* conçues pour les besoins du TEI Consortium
* traitement de documents ODD pour Roma
* génération des Guidelines en XHTML
* transformations vers LaTeX, MsWord (.docx), OpenOffice (.odt), epub, etc.
* et bien d’autres choses encore…
---
# Pourquoi utiliser les XSL Stylesheets ?
En dehors du fait d’être faignants…
* elles résolvent divers problèmes plus ou moins courants
* elles couvrent une grande variété de formats
* collaboration possible à un projet open-source
* largement distribuées sous diverses formes
???
# Pourquoi utiliser les XSL Stylesheets ?
En dehors du fait que nous soyons faignants…
* elles résolvent divers problèmes, plus ou moins courants, auxquels vous n’aurez pas besoin de penser
* elles couvrent une grande variété de formats dont vous pourriez un jour avoir besoin
* puisqu’il s’agit d’un projet open-source, il est possible d’y contribuer
* enfin, les XSL Stylesheets ont beaucoup d’utilisateurs et sont déjà largement distribuées sous diverses formes
---
# Limitations
* ne fournissent pas nécessairement des rendus pour tous les éléments de la TEI
* toutes les valeurs possibles d’attribut ne sont pas prises en compte (ex. `@rend`, `@type`)
* les différents formats de sortie peuvent être incomplets
En revanche elles permettent de régler de nombreux problèmes courants
???
# Limitations
Il est important de comprendre d’emblée que si les XSLT Stylesheets offrent un ensemble de traitements génériques pour la TEI, elles ne traitent pas tous les cas de figure ou tous les éléments ou valeurs d’attribut de la TEI.
Elles ne prétendent pas non plus constituer un modèle de traitement ou de rendu standard pour la TEI. En revanche, elles offrent une très riche bibliothèque de transformations qui devrait dans bien des cas vous faciliter le travail.
Les transformations pour la P5 sont seulement développées en XSLT 2.0, leur utilisation nécessite donc un processeur adapté.
---
# Sebastian Patrick Quintus Rahtz [(13 February 1955 – 15 March 2016)]()
![](../images/sebastian.jpg)
???
La TEI est une communauté, elle est largement redevable des personnes qui ont contribué à son fonctionnement. Sebastian Rahtz a été l’initiateur des XSL Stylesheets dont il a longtemps assuré la maintenance. Pour beaucoup d’entre nous, il était un modèle d’engagement, de désintéressement et de rigueur dans le travail. Sa contribution à la TEI fut considérable, et son décès est une grande perte pour la communauté.
---
# Distribution des XSL Stylesheets
* Sources : [https://github.com/TEIC/Stylesheets](https://github.com/TEIC/Stylesheets)
* Documentation : [http://www.tei-c.org/release/doc/tei-xsl/](http://www.tei-c.org/release/doc/tei-xsl/)
* Téléchargeables sous forme de packet Debian/Ubuntu : [http://tei.oucs.ox.ac.uk/teideb/](http://tei.oucs.ox.ac.uk/teideb/)
* Au cœur du convertisseur OxGarage : [http://www.tei-c.org/oxgarage/](http://www.tei-c.org/oxgarage/)
* Distribuées comme framework d’oXygen : Pré-installé dans la distribution d’oXygen
???
À l’instar du code source de la TEI, les XSL Stylesheets sont distribuées par l’intermédiaire de la page GitHub du Consortium.
La bibliothèque peut donc être installée localement pour être exécutée en ligne de commandes avec un processeur compatible avec XSLT 2.0 (le répertoire `bin/` contient plusieurs fichiers exécutables).
Elle est également distribuée sous forme de packet Debian/Ubuntu pour les utilisateurs Linux. Ce sont elles qui sont aussi au cœur des transformations du convertisseur OxGarage.
Enfin, les stylesheets sont également distribuées parmi les Framework offerts par oXygen et peuvent être exécutées directement depuis l’éditeur oXygen Editor.
---
# Plusieurs manières de personnaliser les XSL Stylesheets
* en spécifiant des .red[valeurs de paramètres] avec oXygen
* en fournissant ces paramètres .red[en ligne de commande]
* en construisant des .red[feuilles de styles embarquant celles de la librairie] en les surchargeant.
---
template: inverse
class: center middle
#
.footnote[[revenir au début](#index) | [programme](00-programme.html#6)]
</textarea><script src="js/remark-0.6.5.min.js" type="text/javascript"></script><script type="text/javascript">
var hljs = remark.highlighter.engine;
</script><script src="remark.language.js" type="text/javascript"></script><script type="text/javascript">
var slideshow = remark.create({
highlightStyle: 'monokai',
highlightLanguage: 'remark'
}) ;
</script></body></html>