Index: jrst2/src/site/fr/rst/devel/presentationXSL.rst diff -u /dev/null jrst2/src/site/fr/rst/devel/presentationXSL.rst:1.1 --- /dev/null Tue Jun 5 15:52:19 2007 +++ jrst2/src/site/fr/rst/devel/presentationXSL.rst Tue Jun 5 15:52:14 2007 @@ -0,0 +1,167 @@ +======================================== +Le XSL (Extensible Stylesheets Language) +======================================== + +.. contents:: Sommaire + +Présentation +============ + +XML est un langage de structuration des données, et non de représentation des données. Ainsi XSL +(eXtensible StyleSheet Language) est un langage recommandé par le W3C pour effectuer la représentation +des données de documents XML. XSL est lui-même défini avec le formalisme XML, cela signifie qu'une +feuille de style XSL est un document XML bien formé. + +XSL est un langage permettant de définir des feuilles de style pour les documents XML au même titre que +les CSS (Cascading StyleSheets) pour le langage HTML ou bien DSSSL (Document Style Semantics and +Specification Language) pour le SGML. XSL est d'ailleurs inspiré de DSSSL dont il reprend beaucoup +de fonctionnalités et est compatible avec les CSS (il s'agit d'un sur-ensemble des CSS). + +Toutefois, contrairement aux CSS, XSL permet aussi de retraiter un document XML afin d'en modifier totalement +sa structure, ce qui permet à partir d'un document XML d'être capable de générer d'autres types de documents +(PostScript, HTML, Tex, RTF, ...) ou bien un fichier XML de structure différente. + +Ainsi la structuration des données (définie par XML) et leur représentation (définie par un langage tel que +XSL) sont séparées. Cela signifie qu'il est possible à partir d'un document XML de créer des documents +utilisant différentes représentations (HTML pour créer des pages web, WML pour les mobiles WAP, ...). + +|presentationxsl| + + +Structure d'un document XSL +=========================== + +Un document XSL étant un document XML, il commence obligatoirement par la balise suivante:: + + + + +D'autre part, toute feuille de style XSL est comprise entre les balises et . + +La balise xsl:stylesheet encapsule des balises xsl:template définissant les transformations à faire subir à certains +éléments du document XML. + +:: + + + + + + + + + +Association d'une feuille XSL à un document XML +=============================================== + +Une feuille de style XSL (enregistré dans un fichier dont l'extension est .xsl) peut être liée à un document +XML (de telle manière à ce que le document XML utilise la feuille XSL) en insérant la balise suivante au début +du document XML:: + + + + + +Les template rules (règles de gabarit) +====================================== + +Les template rules sont des balises XSL permettant de définir des opérations à réaliser sur certains éléments +du document XML utilisant la page XSL, c'est-à-dire généralement de transformer un tag XML en au moins un tag +HTML (généralement plusieurs). + +Ainsi le tag XML suivant:: + + + Pillou + Jean-François + + + VanHaute + Nico + + + Andrieu + Seb + + +pourra être transformé en les tags HTML suivants:: + + + +L'attribut "match" de la balise permet de définir (grâce à la notation XPath) le ou les éléments +du document XML sur lesquels s'applique la transformation. + +La notation Xpath permet de définir des patterns, c'est-à-dire des chaînes de caractères permettant de repérer +un noeud dans le document XML. Les principaux patterns sont : + +======= ============= ================================================================= +Pattern Exemple Signification +======= ============= ================================================================= +``|`` Gauche|Milieu Indique une alternative (un noeud ou bien l'autre (ou les deux)) +/ personne/nom Chemin d'accès aux éléments (personne/bras/gauche) +* * Motif "joker" désignant n'importe quel élément +// //personne Indique tous les descendants d'un noeud +. . Caractérise le noeud courant +``..`` ``..`` Désigne le noeud parent +@ @valeur Indique un attribut caractéristique +======= ============= ================================================================= + +La transformation peut être réalisée : + +- soit par ajout de texte, +- soit en définissant des éléments de transformation, c'est-à-dire des éléments permettant de définir + des règles de transformation à appliquer aux éléments sélectionnés par l'attribut match + +Voici un exemple de feuille XSL permettant d'effectuer la transformation XML vers HTML décrite ci-dessus:: + + + + + + + Titre de la page + + + + + + + +
    +
  • + + - + +
  • +
+
+
+ + +Voici la signification de cette feuille XSL : + +* Le premier tag permet d'appliquer une transformation à l'ensemble du document (la valeur + "/" de l'attribut match indique l'élément racine du document XML). Ce tag contient des balises HTML qui + seront transmises dans l'arbre résultat. +* L'élément indique le traitement de tous les enfants directs de la racine. +* La balise permet d'aller traiter les éléments de type personne. +* Enfin les deux éléments et permettent de + recuperer les valeurs des balises nom et prenom. + +Références +========== + +- Article : http://www.commentcamarche.net/xml/xmlxsl.php3 +- Schéma : http://fr.wikipedia.org/wiki/Extended_stylesheet_language_transformations + +.. |presentationxsl| image:: images/presentationXSL.png \ No newline at end of file Index: jrst2/src/site/fr/rst/devel/docDeveloppeur.rst diff -u /dev/null jrst2/src/site/fr/rst/devel/docDeveloppeur.rst:1.1 --- /dev/null Tue Jun 5 15:52:19 2007 +++ jrst2/src/site/fr/rst/devel/docDeveloppeur.rst Tue Jun 5 15:52:14 2007 @@ -0,0 +1,122 @@ +========================= +Documentation développeur +========================= + +.. contents:: Sommaire + +Le diagramme de Class +===================== + +|classDiagramme| + +La Class **AdvancedReader** à pour fonction de faciliter la lecture du fichier RST grâce à différentes méthodes : + - String readLine() : renvoie une ligne + - String[] readLines(int nombresLigne) : renvoie un certain nombre de lignes + - Stringn[] readWhile(Pattern p) : renvoie les lignes tant qu'elles correspondent au pattern + +... + +La Class **JRSTLexer** utilise **AdvancedReader** pour construire un fichier XML, il parcours l'ensemble du document pour isoler les types de données, leurs paramètres et leurs contenus, donc rassembler toutes les informations utiles à la mise en forme du XML final. Il va commencer par l'entête du document (peekHeader(), peekDocInfo()) pour ensuite s'intéresser au corps (peekBody()). + +La Class **JRSTReader** utilise **JRSTLexer**, il interprète le XML qui lui est renvoyé pour construire le XML final. Celui-ci est conforme à la DTD définie par DocUtils_. Cette Class à parfois besoin de s'appeler elle même lorsque une partie du document doit être interprétée indépendamment du reste. Par exemple, s'il y a une liste dans une case d'un tableau, l'on extrait les informations de la case et on les interprètes, le contenu d'une admoniton (une note) doit lui aussi être considéré comme un document indépendant. Lorsque la génération est terminée, la Class compose le sommaire (composeContent()) puis s'occupe de toutes les spécificités « inline » (inline()), comme par exemple les mots en italique ou gras, les références, les footnotes... Tout ce qui peut apparaître à l'intérieur d'une ligne. + +La Class **reStructuredText** référence toutes les variables nécessaires à la génération du XML final. + +La Class **JRST** contient la méthode main(), elle gère les options, la lecture et l'écriture des fichiers. Elle lit le document, le parse grâce à la class **JRSTReader** puis applique le XSL désiré (si besoin) grâce à la class **JRSTGenerator**. + +La génération +============= + +|diagrammegeneration| + +Référence : + + * xml2rst.xsl (convertion de xml de docutils vers rst) : http://www.merten-home.de/FreeSoftware/xml2rst + * dn2dbk.xsl (convertion de xml de docutils vers docbook) : http://membres.lycos.fr/ebellot/dn2dbk + * les xsl de nwalsh (convertion de docbook vers FO et xhtml) : http://nwalsh.com + + * XMLmind (convertion de FO vers ODT et RTF) : http://www.xmlmind.com/foconverter/what_is_xfc.html + * FOP (convertion de FO vers PDF) : http://xmlgraphics.apache.org/fop + +Exemple d'utilisation +===================== + +L'on souhaite convertir le document rst (text.rst) suivant en html (text.html) : + +:: + + ===== + Titre + ===== + + :Author: Letellier Sylvain + + .. Attention:: texte à être réinterprété comme un fichier rst indépendant + +On utilise donc la commande suivante:: + + JRST -t html -o text.html text.rst + +Ce diagramme de séquence décrit le fonctionnement du parseur tout au long de la génération : + +|sequanceDiagramme| + +La Classe **JRSTGenerator**, grâce au fichier XSL rst2xhtml.xsl, renvoie le fichier html suivant:: + + + + + + + Titre + + +

Titre

+ + + + + + + + + +
author :Letellier Sylvain
+
+

attention :

+

+

texte à être réinterprété comme un fichier rst indépendant

+

+
+ + + +Qui affiche la page (un CSS à été ajouté pour la mise en forme) : + +.. topic:: Titre + + :Author: Letellier Sylvain + .. Attention:: texte à être réinterprété comme un fichier rst indépendant + +Utilisation de XSL externe +========================== + +JRST propose de transformer le XML de docutils_ avec des fichiers XSL externe. +Pour cela, il faut utiliser la commande:: + + JRST -x fichierXSL, fichierXSL2 fichierRST + +ou:: + + JRST --xslFile fichierXSL, fichierXSL2 fichierRST + +JRST traitera le fichierRST, le XML de DocUtils_ qui est retourné sera transformé par la Class JRSTgenerator +en commençant par le fichierXSL puis par le fichierXSL2... + +Une documentation sur le XSL est diponible ici_. + +.. _ici: presentationXSL.html +.. _DocUtils: http://docutils.sourceforge.net/docs/ref/doctree.html +.. |diagrammegeneration| image:: images/diagrammeGeneration.png +.. |classDiagramme| image:: images/diagrammeClass.png +.. |sequanceDiagramme| image:: images/diagrammeSequance.png \ No newline at end of file Index: jrst2/src/site/fr/rst/devel/docExterne.rst diff -u /dev/null jrst2/src/site/fr/rst/devel/docExterne.rst:1.1 --- /dev/null Tue Jun 5 15:52:19 2007 +++ jrst2/src/site/fr/rst/devel/docExterne.rst Tue Jun 5 15:52:14 2007 @@ -0,0 +1,11 @@ +===================== +Documentation externe +===================== + +Le site de docUtils : http://docutils.sourceforge.net/rst.html + +La DTD reStructuredText : http://docutils.sourceforge.net/docs/ref/doctree.html + +Un XSL permettant de convertir le XML en RST : http://www.merten-home.de/FreeSoftware/xml2rst/ + +Pour la génération de la javaDoc en RST : http://java.sun.com/j2se/1.3/docs/tooldocs/javadoc/overview.html \ No newline at end of file Index: jrst2/src/site/fr/rst/devel/librairies.rst diff -u /dev/null jrst2/src/site/fr/rst/devel/librairies.rst:1.1 --- /dev/null Tue Jun 5 15:52:19 2007 +++ jrst2/src/site/fr/rst/devel/librairies.rst Tue Jun 5 15:52:14 2007 @@ -0,0 +1,30 @@ +==================================== +Les différentes librairies utilisées +==================================== + +.. contents:: Sommaire + +dom4j_ +====== + +Dom4j_ est une API Open Source Java permettant de travailler avec XML, XPath et XSLT. Cette bibliothèque est compatible avec les standards DOM, SAX et JAXP. + +javax.xml.transform_ +==================== + +Librairie permettant la transformation XSL. + +SDoc_ +===== + +SDoc_ fournit des composants Swing qui inclut la coloration syntaxique pour de nombreux langages. + +Xmlunit_ +======== + +Xmlunit_ permet de comparer deux fichiers XML pour mettre en évidences les différences. + +.. _dom4j: http://www.dom4j.org +.. _javax.xml.transform: http://java.sun.com/j2se/1.4.2/docs/api/javax/xml/transform/package-summary.html +.. _SDoc: http://sdoc.sourceforge.net/wiki/pmwiki.php +.. _Xmlunit: http://xmlunit.sourceforge.net/ \ No newline at end of file Index: jrst2/src/site/fr/rst/devel/Todo.rst diff -u /dev/null jrst2/src/site/fr/rst/devel/Todo.rst:1.1 --- /dev/null Tue Jun 5 15:52:25 2007 +++ jrst2/src/site/fr/rst/devel/Todo.rst Tue Jun 5 15:52:14 2007 @@ -0,0 +1,23 @@ +==== +Todo +==== + +Voici la liste des tâches qui reste à faire. Si quelqu'un souhaite aider, ou +a une idée à proposer il ne faut pas hésiter. + +- intégrer une date multiformat +- faire une feuille de style de conversion de xhtml -> xdoc + +- la documentation en anglais (si quelqu'un pouvait me relire :) ) +- faire une règle ant pour aider à la génération + + destination est le répertoire destination + extension est la modification de l'extension des fichiers sources avec + cette extension + +- un export vers pretion, magic, ou autre outil de présentation. + +- permettre l'import de d'autre format que rst, par exemple .sxw + ce qui permettra de convertir simple du .sxw en rst. + +- Faire une doclet qui permette d'écrire les Javadocs en RST