summaryrefslogtreecommitdiff
path: root/RFC_7998_xml2rfc_Version_3_Preparation_Tool_Description.txt
blob: 8106531b58a6b42e1af063790409cb192dd5980b (plain)
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
Titre: RFC 7998: "xml2rfc" Version 3 Preparation Tool Description
Auteur: 
Date: Fri 16 Dec 2016 01:00:00 +0100
Lien: https://www.bortzmeyer.org/7998.html

Depuis la sortie du RFC 7990, le format canonique des RFC est le format XML. 
C'est un texte écrit en XML, selon le vocabulaire du RFC 7991 qui sera la 
version de référence, archivée et faisant autorité, pour tous les RFC. Comme 
les auteurs enverront souvent un XML imparfait, un outil de préparation sera 
nécessaire, pour compléter ce XML imparfait et permettre au RFC Editor de 
travailler sur une base sérieuse. Ce nouveau RFC décrit ce futur outil de 
préparation.

Ainsi, les outils qui travailleront sur le format canonique des RFC (par 
exemple les outils qui produiront le PDF, le HTML, etc) pourront compter sur un
document complet et n'auront pas à gérer les écarts des auteurs : seul l'outil 
de préparation devra s'en soucier.

Cet outil de préparation servira aux RFC une fois qu'ils seront soumis au RFC 
production center (cf. RFC 6635) mais aussi aux Internet-Drafts pendant leur 
élaboration.

Dans le second cas (section 3 de notre RFC), le futur outil de préparation 
prendra un Internet-Draft en entrée et produira un document complet (par 
exemple avec addition des boilerplates).

Et ce sera à peu près la même chose lorsque le RFC sera presque fini. On 
passera la version finale dans l'outil de préparation, qui résoudra les 
références externes et ajoutera les éléments obligatoires manquants.

Bon, et en quoi vont consister exactement ces modifications ? Elle sont 
décrites dans la section 5, qui forme le gros de ce RFC. Contrairement à 
l'outil actuel idnits[1] qui se contente de vérifier les Internet-Drafts, le 
nouvel outil va également corriger le texte, ajoutant des éléments, et 
changeant les valeurs erronées.

C'est ainsi que l'outil de préparation va traiter les éléments XInclude, les 
remplaçant par la valeur incluse. Il va traiter les DTD pour les supprimer 
ensuite (donc, remplacer les entités par leur valeur, et inclure les fichiers 
inclus par ce mécanisme). Ces deux actions peuvent aujourd'hui être faites par 
l'outil xmllint, avec xmllint --xinclude --noent --dropdtd NOMDUFICHIER.xml.

Outre ces mécanismes d'inclusion de XML, l'outil de préparation va aussi 
traiter les inclusions spécifiques au vocabulaire du RFC 7991. Ainsi, 
<>artwork> a un attribut src indiquant la source du graphique, et l'outil de 
préparation va donc inclure ce graphique. (Idem avec <>sourcecode> pour inclure
le code source.)

Les instructions XML (PI, Processing Instructions) seront supprimées (ça, je ne
sais pas le faire avec xmllint).

L'outil va valider le résultat produit, en utilisant la grammaire Relax NG du 
RFC 7991. Ça peut aujourd'hui se faire avec xmllint mais aussi avec rnv[2] : 

% rnv rfc-v3.rnc rfc-v3-sample.xml
rfc-v3-sample.xml
ou bien avec jing[3] : 

% java -jar ./jing-20091111/bin/jing.jar  -c rfc-v3.rnc rfc-v3-sample.xml

Parmi les nombreuses transformations possibles, citons l'ajout (s'il n'était 
pas déjà présent) de l'élément <>seriesInfo> qui indique s'il s'agit d'un 
Internet-Draft ou d'un RFC, l'ajout d'un élément <>date> s'il manque (sa valeur
étant la date du traitement), changement de l'ancien attribut title en name, le
retrait des commentaires XML...

Il est fréquent dans les Internet-Drafts de voir des paragraphes qui ne devront
pas être inclus dans le futur RFC. C'est le cas s'ils contiennent des exemples 
réels qui risquent de ne pas être éternels (les RFC peuvent durer longtemps et 
ne sont jamais modifiés). C'est également le cas s'il s'agit de l'état actuel 
des mises en œuvre d'un RFC, comme décrit dans le RFC 7942. Dans le système 
actuel, ces paragraphes sont marqués par un texte en langue naturelle. Dans le 
nouveau vocabulaire du RFC 7991, ce sera fait avec un attribut removeInRFC. 
L'outil de préparation pourra enlever automatiquement ce paragraphe quand il 
préparera un RFC.

L'outil de prépartion devra également arranger le XML. Cela peut se faire 
aujourd'hui avec xmllint (ses options --format ou bien --pretty). Par contre, 
il n'est pas prévu de mettre le XML sous sa forme canonique.

Il y aura d'autres opérations faites par l'outil de préparation, voir le RFC 
pour les détails.

L'outil n'est pas encore développé, un appel d'offres a été lancé et les 
gagnants ont été les sociétés SeanTek et Elf Tools.

Liens:
[1]: https://tools.ietf.org/tools/idnits/ (lien)
[2]: http://www.davidashen.net/rnv.html (lien)
[3]: http://www.thaiopensource.com/relaxng/jing.html (lien)