pluriTAL – BLOG Master pluriTAL [ParisX, ParisIII, INALCO]

Vos problèmes avec UTF-8 (Linux, Mac, langues non ASCII) -> ASCII ? + mes problèmes avec le choix du vocabulaire ?

Posted in pluriTAL by pluritaluser on 31 mai 2009

UTF-8 2 ASCII

J’ai trouvé deux programmes sur internet qui pourraient aider ceux qui ont des problèmes d’affichage de caractères. Mais je ne sais pas les utiliser parce que je ne les utilise pas:
uni2ascii
http://www.billposer.org/Software/uni2ascii.html
Recode
http://recode.progiciels-bpi.ca/README.html

Françoise Del Socorro

——————————————————————————————————

Problèmes avec mkalign pour les corpus comparables

Moi j’ai un problème avec mkalign, je ne suis pas encore dans la phase d’aligner les textes, je suis en train de choisir le lexique de mon vocabulaire. J’ai recherché les segments répétés sur lexico 3 puis j’ai sélectionné une liste de mots composés en français que je dois aligner avec des mots composés en portugais. J’ai utilisé l’option save as HTML de Mozilla puis j’ai enlevé les balises HTML. Moi ce qui serait utile pour choisir les mots ce serait de pouvoir: 1) supprimer les lignes que je ne souhaite pas avoir 2) pouvoir mettre des flèches dans les deux sens pour aligner une case sur une ou plusieurs cases et inversement. Et comme cela je pourrais choisir le vocabulaire à aligner. Je n’aime pas avoir à comparer une liste de 300mots dont 80% des lignes ne sont pas des mots, des deux côtés, mentalement.

Deuxième problème je ne sais pas si le pluriel correspond à une entrée lexicale différente, parce que même si là je suis restée sur le plan morpho-lexical, si j’avais pris en compte le sens, ce que je ne vais pas faire car cela aurait impliqué de mettre en valeur la polysémie, l’homonymie et la synonymie (il y en a autant que dans la langue courante car ce qu’on nous enseigne sur le langage scientifique c’est l’inverse de la réalité linguistique, il ne faut pas croire la norme, il faut croire les faits), morphologiquement le pluriel ne signifie pas la même chose. De plus il y en a très peu dans les segments répétés, alors je ne sais pas si je dois n’utiliser que le texte ? Proposer tout au singulier et au pluriel ? Proposer tout au singulier ? De plus si on prend en compte le pluriel x les variations morphologiques, il y aura des redondances dans la traduction des mots, et donc des cases pareilles puisqu’on ne peut pas faire des croisements. Là je parle des mots tout courts et pas des phrases.

Et donc là je ne parle que de la morphologie, des variations morphologiques, si je prenais en compte la sémantique, l’alignement serait impossible à faire à cause de la dénotation, ie: un mot peut se traduire de plusieurs façons différentes.

Finalement étant donné que j’utilise le même corpus avec Lexico3 et le Projet Multilingue, je suis en train de tout mélanger dans ma tête. Est-ce que je peux faire une explication différente dans l’index avec des liens vers des fichiers traités, des tableaux explicatifs (j’ai fait plus de traitements manuels que de traitements automatiques pour avoir de meilleurs résultats), des résultats, et des programmes pareils ? J’ai déjà commencé une pluie de blablabla avant d’avoir obtenu des résultats pour le projet multilingue… Et en plus dans le projet Lexico3 il y aura plus de choses car je vais le rendre vers le 20juin (Nanterre fini le 27juin) et avoir plus de donnée mes permettra de donner un point de vue différent dans l’index.

Exemple: potentiel-fr-mkalign.txt

potentiel de la
potentiel de la membrane  (v = variante morphologique désignant le mot composé: potentiel de membranne)
potentiel de membrane  (v = potentiel de membranne)
potentiel de membrane à
potentiel de membrane au
potentiel de membrane au repos (v = variante morphologique désignant le mot composé: potentiel de repos)
potentiel de membrane d une cellule oeuf
potentiel de membrane d une cellule
potentiel de membrane de
potentiel de membrane de repos (v = variante morphologique désignant le mot composé: potentiel de repos)
potentiel de membrane des
potentiel de membrane en

Exemple: potentiel-fr-mkalign.txt

potencial de membrana celular
potencial de membrana das células em geral
potencial de membrana das células
potencial de membrana das
potencial de membrana de repouso (v = variante morphologique désignant le mot composé: potentiel de repos)
potencial de membrana de
potencial de membrana do
potencial de membrana é
potencial de membrana em células
potencial de membrana em repouso (v = variante morphologique désignant le mot composé: potentiel de repos)
potencial de membrana em
potencial de membrana em torno de
potencial de membrana esse potencial pode ser medido
potencial de membrana está
potencial de membrana mitocondrial (v = potentiel de membranne mitochodrial – peut-être non pertinent pour un lexique général)
potencial de membrana mv
potencial de membrana na
potencial de membrana nas células
potencial de membrana no
potencial de membrana o
potencial de membrana por
potencial de membrana potencial de repouso
potencial de membrana (v = potentiel de membranne)

— > La réalité du jargon scientifique est pire si on se fie à la réalité.

Françoise Del Socorro

Publicités

Projet pour projet multilingue + début du projet : les fichiers contextes sont soulignes en bash ! + qqn a 1 pgme pour découper les balises d’après lexico3?

Posted in pluriTAL by pluritaluser on 29 mai 2009

Ce que je pense faire pour le projet multilingue:

Le tableau sur les 3 mots en deux langues je vais le garder pour le projet lexico3.

Le tableau que je vais faire va avoir cette allure:

Le choix des phrases en contexte dans des corpus comparables

1 2 3 4 5 6 7 8 9 10 theme 1 mot br mot fr theme 1 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 theme 2 theme 2 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 theme 3 theme 3 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 theme 1 mot br mot fr theme 1 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 theme 2 theme 2 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 theme 3 theme 3 1 2 3 4 5 6 7 8 9 10

Les liens pointeront vers des fichiers de contextes concaténés.

Mon lexique bilingue aura 10 entrées.

Une fois que le tableau sera fonctionnel, ce n’est pas du tout relevant, mais je vais compter le nombre de fois que je vais trouver chacun des mots dans chaque contexte concaténé (commandes trouvées sur internet).

nom@ordinateur ~
$ wc lynx-blogtal-enligne.html
1477 11817 136984 lynx-blogtal-enligne.html

nom@ordinateur ~
$ grep -cw le lynx-blogtal-enligne.html
146

grep -cw peut compter le nombre total d’occurrences d’un motif > je ne vais que utiliser cette fonction.

Problème: je ne peux pas chercher des mots accentués (accented characters) comme « potencial de ação » parce que déjà je ne peux pas les taper. La commande qui permet de savoir si on est en UTF-8 ne répond pas: env|grep LANG. Et je n’ai pas du tout compris comment combiner les accents:

nom@ordinateur ~
$ grep -cw « structur » lynx-blogtal-enligne.html
5

nom@ordinateur ~
$ grep -cw « structur? » lynx-blogtal-enligne.html
0

Rem: Pour les mots accentués, ce n’est que sur le terminal qu’ils sont invisibles, mais la requête pour l’autre tableau (lexico3) a fonctionné dans le script: egrep -i -A1 -B1 « potencial de ação » ../DUMP-TEXT/Portugais/$i.html > ../CONTEXTES/Portugais/potencial-de-acao-$i.html; j’espère seulement qu’elle continuera de fonctionner.

Après je vais choisir 1 seule phrase par mot pour chaque langue, et je vais les mettre chacune dans un fichier texte avec le retour chariot comme délimiteur et les charger dans mkalign.

Après je vais sauvegarder le résultat de mkalign, je pense qu’on peut le sauvegarder en .html, et si c’est en xml, il va falloir faire la feuille de style.

Mon domaine c’est la biologie cellulaire et les 3 thèmes c’est potentiel d’action, potentiel de repos et potentiel de membranne. Ce pourquoi j’ai dit que le décompte des mots est arbitraire, ces 3 mots sont trop liés pour être considérés comme des thèmes, ce ne sont pas des domaines d’étude, mais comme mathématiquement tout est ensemble. Donc ces mots sont des mots-ensemble !

Ce qui change c’est que wget (lynx -source) servira à expliquer la source des documents pour lexico3, et ici on ne va pas du tout parler du téléchargement des pages web en local, car j’ai trouvé mieux d’utiliser les fichiers que j’avais normalisé pour lexico3 du coup on cherchera:  » potentiel d action  » au lieu de  » potentiel d’action  » puisque il y a plusieurs façons de mettre une apostrophe.

Françoise Del Socorro

——————————————————————————————————————-

J’ai trouvé une manière de mettre les mots en gras sous bash et de faire un minimum de présentation c’est très difficile car sed n’aime pas les balises HTML. J’ai trouvé des exemples sur internet et je me suis inspirée: http://www.grymoire.com/Unix/Sed.html

Par contre si quelqu’un a un programme qui découpe les fichiers d’après les balises de lexico3 j’aimerais bien car ce serait mieux que de redécouper toutes les +de 60pages du fichier actualisé.

Je suis au début du programme mais je vais écrire autant que je peux aujourd’hui… la sortie c’est deux carrés dont le premier carré contient des liens vers des fichiers contextes soulignés ! Je veux dire: mis en gras ! souligné c’est <u></u>, moi j’ai mis <b></b>

#!/bin/bash

tablo= »../TABLEAUX/lexique-portugais-francais.html »;

echo « Creation page html pour le lexique francais – portugais »
#
# Tableau 1
echo « Téléchargement du tableau 1… »;
# Titre dans le title-bar et titre de la page.
echo « <html><head><title>Le choix des phrases en contexte dans des corpus comparables</title></head><body bgcolor=\ »#DEF7D8\ » text=\ »#DE6B3F\ » link=\ »#034B16\ » alink=\ »#C059E2\ » vlink=\ »#431C4F\ »><h2><font color=\ »#DE6B3F\ »>Le choix des phrases en contexte dans des corpus comparables</font></h2> » >> $tablo;
# Initialisation du compteur
i=1; #contextes
j=1; #contextes2theme
k=1; #contextes
#  Outils: egrep et cat.
echo « <table border=\ »4\ » BORDERCOLOR=\ »darkblue\ » cellspacing=\ »2\ » cellpadding=\ »8\ » bgcolor=\ »lightblue\ »><tr><td> » >> $tablo;

#idee pour open file en bash
#cat $a >> temp
#cat temp > $a
#cat temp >> $a

for line in `cat ../URLS/norm-repos-pt.txt`
{
(egrep -i -l « potencial de repouso » $line & egrep -i -n -A1 -B1 « potencial de repouso » $line) > ../CONTEXTES/Portugais/$i.html;
a= »../CONTEXTES/Portugais/$i.html »
sed -i ‘/[a-z]/ a\</br>’ $a; #met des br en fin de ligne
cat $a >> ../CONTEXTES/Portugais/$k.temp.html;
echo « <html> » > $a;
cat ../CONTEXTES/Portugais/$k.temp.html >> $a
echo « </html> » >> $a; #met des balises html entre les contextes
sed -i -r -e ‘s/potencial de repouso/<b>potencial de repouso<\/b>/g’ $a; #met les contexte en gras

(egrep -i -l « potencial de repouso » $line & egrep -i -A1 -B1 « potencial de repouso » $line) > ../CONTEXTES/Portugais/$j.temp.html;
cat ../CONTEXTES/Portugais/$j.temp.html >> ../THEMES/Portugais/potencial-de-repouso-pt.html;
rm ../CONTEXTES/Portugais/*\.temp.html;
echo « <a href=\ »../CONTEXTES/Portugais/$i.html\ »>$i</a> » >> $tablo;
let « i+=1 » ;
let « j+=1 » ;
let « k+=1 » ;
}
echo « </td> » >> $tablo;
echo « <td><a href=\ »../THEMES/Portugais/potencial-de-repouso-pt.html\ »>Potenciel de Repos pt</a></td> » >> $tablo;
echo « </tr></table> » >> $tablo;

echo « </body></html> » >> $tablo;
echo « terminé. »;

Françoise Del Socorro

Petit résumé en syntaxe formelle

Posted in pluriTAL by pluritaluser on 24 mai 2009

Lisez absolument l’article de Mourad sur le XSL: Comment créez votre site de document structuré qui est dessous !!!

Si jamais vous passez par le blog lundi, je vous propose un résumé d’une grande partie des photocopies de la prof, il faut lire les photocopies aussi.

To download the summary, you can go to my bloop: http://www.mybloop.com/francoisepeace >> resume-syntaxe.odt
Or ask Foutoun or Raoum to send it to you.

Voici un extrait:

Given ; <=> \n and {a,b} <=> a or b

3.3.7 The head feature principle

According to the Head Feature Principle (HFP), the HEAD value of the mother and the HEAD value of the head-daughter are identical, so if we place an H on the right side of the head-daughter, we can simplify both the mother and the head-daughter.

Same HEAD

Examples:

mother

head-daughter

strict-transitive phrase: S → V NP:

[phrase ; VAL[COMPS itr ; SPR ]]

H[word ; VAL[COMPS str ; SPR ]] NP

nominal phrase: NP → D NOM:

[phrase ; VAL[COMPS itr ; SPR +]]

→ D H[phrase ; HEAD noun ; VAL[SPR ]]

NOM

N (word)

NP

NOM (phrase)

VP

V (word)

S

VP (phrase)

PP

VP/NOM (phrase)

Françoise Del Socorro

Comment créez votre site de document structuré

Posted in pluriTAL by pluritaluser on 23 mai 2009

Bonjour Françoise et tous mes camarades,

Suite à votre demande j’ai rédigé ce petit tutorial et espérant qu’il vous aide à faire votre site des documents structurés.

En effet, le site web qu’on doit faire nécessite nos connaissances en html/css et les connaissances qu’on doit l’acquérir à travers surtout les exercices de TP XSLT.

Dans la suite, nous allons voir un petit exemple dont nous allons créer une pages web en utilisant un fichier XML, un fichier XSLT et un fichier CSS.

Tout d’abord, on crée un fichier xml bien structuré qui contient toutes les informations et les liens qu’on veut les mettre. Vous savez le choix des balises dans le xml est arbitraire donc vous créez votre page « index.xml » comme vous voulez à condition qu’il soit bien formé.

Dans notre exemple, le document suivant que je l’ai appelé index.xml présente l’enonce et la solution d’exercice1 de TP XPATH.

Voici notre exemple index.xml :

<?xml version="1.0" encoding="UTF-8"?>
<rapport>
    <page titre="Accueil" status="nav" link="ACCUEIL.xml"/>
    <page titre="XML" status="nav" link="XML.xml"/>
    <page titre="XPATH" status="cour" link="XPATH.xml">
	        <section titre="result_bio-v3.xml">
            <exercice>
                <enonce>Rechercher tous les SN</enonce>
                <solution><code><![CDATA[//SN]]></code></solution>
            </exercice>
            <exercice>
                <enonce>Rechercher tous les SV</enonce>
                <solution><code><![CDATA[//SV]]></code></solution>
            </exercice>
            <exercice>
                <enonce>Rechercher tout élément ORGANIZATION</enonce>
                <solution><code><![CDATA[//ORGANIZATION]]></code></solution>
            </exercice>
            <exercice>
                <enonce>Rechercher tout élément LOCATION</enonce>
                <solution><code><![CDATA[//LOCATION]]></code></solution>
            </exercice>

        </section>
</page>
<page titre="XSLT" status="nav" link="XSLT.xml"/>
</rapport>

Aprés comme nous avons fait dans le TP XSLT, nous créons tous d'abord la feuille de style xslt pour cette
 page.
Pour notre exemple la feuille de style XSL est la suivante:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="html"/>

<!-- ******************* impression de la structure HTML *********************** -->

<xsl:template match="rapport">

    <html lang="fr" xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">

        <head>
            <title><xsl:value-of select="info/titre"/></title>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
           <!-- L'appel au feuille de style CSS -->
           <link rel="stylesheet" href="rapport_fichiers/style.css"/>
        </head>

        <body>
            <div id="entete">
           <h2 style="color:#000000;"> Site Documents Structurés</h2>
            </div>

            <div id="navigation">
                <xsl:call-template name="navigation"/>
            </div>

            <div id="espace_de_travail">
                <xsl:apply-templates select="page"/>
            </div>

            <div id="footer">
                Présentation faite par <b><xsl:value-of select="info/nom"/></b>,
                <xsl:value-of select="info/e-mail"/>, <xsl:value-of select="info/date"/>
            </div>
        </body>

    </html>
</xsl:template>

<!-- ******************* impression des onglets *********************** -->

<xsl:template name="navigation">
    <xsl:for-each select="page">
        <a>
            <xsl:attribute name="class">
                <xsl:value-of select="@status"/>
            </xsl:attribute>

            <xsl:attribute name="href">
                <xsl:value-of select="@link"/>
            </xsl:attribute>

            <xsl:value-of select="@titre"/>
        </a>
        <xsl:text> </xsl:text>
    </xsl:for-each>
</xsl:template>

<!-- ******************* impression page *********************** -->

<xsl:template match="page">
    <xsl:if test="@status='cour'">
        <h2><xsl:value-of select="./@titre"/></h2>
        <xsl:for-each select="section">
            <h3><xsl:value-of select="./@titre"/></h3>
            <xsl:apply-templates/>
            <h4 align="right"><a href="#entete">remonter</a></h4>
        </xsl:for-each>
    </xsl:if>
</xsl:template>

<!-- ******************* impression section *********************** -->

<xsl:template match="commentaire">

    <p><xsl:apply-templates/></p>

</xsl:template>

<xsl:template match="exercice">

    <p><b><xsl:number format="1"/>.</b><xsl:apply-templates/></p>

</xsl:template>

<!-- ******************* impression exercice *********************** -->

<xsl:template match="enonce">

    <b><xsl:value-of select="."/></b><br/>

</xsl:template>

<xsl:template match="solution">

    <p><xsl:apply-templates/></p>

</xsl:template>

<xsl:template match="prog">
    <blockquote>
        <pre>
            <xsl:apply-templates/>
        </pre>
    </blockquote>
</xsl:template>

<!-- ******************* mise en page bold/italic/code *********************** -->

Après n'oubliez pas d'ajouter l'appel au feuille de style dans le fichier index.xml comme nous voyons
dans notre exemple:
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
Maintenant vous pouvez tester et voir que votre fichier index.xml est bien transformé.
La résultat n'est pas très agréable. C'est pour cela nous allons faire appel au css pour que notre
fichier soit beaucoup mieux.
Puisque les transformation se fait en utilisant une feuille XSLT. Donc au niveau de feuille de style XSLT
aussi qu'il faut appliquer le CSS.
Il existe 3 méthodes pour appliquer les classes CSS, la meilleur méthode consiste à créer un fichier
style.css qui contient tous les classes CSS que vous voulez l'appliquer sur stylesheet.xsl.
Afin de faire un appel à style.css dans stylesheet.xsl.
L'appel se fait en ajoutant la ligne suivante dans votre fichier stylesheet.xsl
<link rel="stylesheet" href="rapport_fichiers/style.css"/>

Voici un exemple de fichier style.css:
body
{
font-family: Verdana, Arial, sans-serif;
font-size: 11px;
padding:15px;

}

#entete
{
width:700px;
height: 100px;
margin:auto;
border-color:#5d6c79;
border-style:solid;
border-width:1px;
border-bottom-style:solid;

padding-left:15px;
padding-right:15px;
background-repeat:repeat-x;
background-position:top;
background-color:#ffffff;
}
a.nav
{
padding-left:25px;
padding-right:25px;
border-color:#5d6c79;
border-style:solid;
border-width:1px;
text-align:center;
background-color:#fdb57a;
}

a.nav:hover
{
padding-left:25px;
padding-right:25px;
border-color:#5d6c79;
border-style:solid;
border-width:1px;
text-align:center;
background-color:#ffffff;
}
Maintenant, vous avez une page web très agréable :).
Enfin si vous avez bien compris vous pouvez utilisez ce exemple pour faire vos sites.
Et comme a dit M. Fleury « n'hésitez pas à voir les travaux des années derniére »
pour inspiré et prendre des bonnes idées.
Remarque importante: Ce exemple est extrait de site de Ivan Smilauer (2006-2007)

                                     Bon courage
                                     Mourad Aouini

wget en local et lynx en local (projet multilingue)

Posted in pluriTAL by pluritaluser on 20 mai 2009

Au cas où wget ne marche pas en local, essayez: lynx -source, je n’ai trouvé aucun forum qui propose cela, mais j’ai eu l’idée parce que c’est comme cela que l’on fait avec les navigateurs comme IE ou Mozilla on peut sélectionner la source et la sauvegarder en .html
Le -term=vt100 indique le type de navigateur, on ne l’utilise que si cygwin nous le demande.

Exemples:
wget -O wget-blogtal-enligne.html https://tal-p3.wordpress.com/
wget -O wget-blogtal-enlocal.html file://localhost/cygdrive/c/cygwin/home/fran/wget-blogtal-enligne.html
lynx -source https://tal-p3.wordpress.com/ > ./lynx-blogtal-enligne.html
lynx -source -term=vt100 file://localhost/cygdrive/c/cygwin/home/fran/lynx-blogtal-enligne.html > lynx-blogtal-enlocal.html

Toutes les pages téléchargées sont pareilles !

********Rappel:
Pour poster sur le blog, le username c’est: pluritaluser et le mot de passe c’est le nom de l’endroit où on apprend le projet encadré -2008, après on fait: articles > add new, moi je fais toujours  » aperçu  » avant de  » publier  » sinon ça ne marche pas de chez moi.

Françoise Del Socorro

Devoir Loupy – RI pour le Mardi 26 Mai

Posted in pluriTAL by pluritaluser on 18 mai 2009

Aller sur Wordnet http://wordnet.princeton.edu/ > Use Wordnet Online, regarder 5 mots appartenant à un domaine assez concret et pas trop large, et essayer de voir les liens entre ces mots: synonymie, hyponymie, hyperonymie, méronymie, etc. Répondre aux questions:

  1. Quelle est la nature des liens entre ces mots ?

  2. Est-ce que le lien thématique est bien fait (au cas où on le trouve)?

    Remarques:

    * En cours il a critiqué Wordnet parce que il n’y a pas le lien entre King et Queen à part Human parce que ce sont des gens qui ne se connaissaient pas qui ont étiqueté ces deux mots séparément, et il n’est pas non plus d’accord avec la top ontology parce que les américains rapportent tout dans la catégorie Dieu, or pour nous ce n’est ni objectif ni utile puisque notre but est d’avoir un lexique qui permette de désambiguïser les mots sémantiquement de façon automatique.

    * Il n’est pas non plus d’accord avec les définitions dans les dictionnaires communs car elles sont trop générales parce que si on essaye de relier les mots en contextes avec leurs définitions lexicologiques on voit très vite qu’il y a des sens qui manquent, et donc ce qui nous intéresse c’est d’avoir la distinction la plus grossière possible porteuse d’information en rapport avec ce qui est dit dans le texte.

    * De plus il n’est pas non plus d’accord avec l’idée de tout devoir relier au sommet, il pense qu’on peut avoir des catégories isolées parce qu’on ne cherche pas à représenter l’univers. On veut c’est travailler par champ sémantique en fonction du client que l’on a: assurances, voyages, vacances, informatique… Donc il faut qu’on néglige les 3 premiers niveaux hiérarchiques en partant du sommet et qu’on critique le sens des mots dans le domaine sémantique qu’on a choisi.

    * Finalement il pense aussi qu’il faut admettre les doubles héritages: un mot peut appartenir à plusieurs catégories sémantiques différentes. Et que l’homogénéité dans la description des catégories n’est pas importante, si on a besoin, on peut avoir dans la catégorie SPORT l’hyponyme sport d’équipe et l’hyponyme sport de ballon, ce n’est pas incompatible.

Vous avez le temps, on n’a pas cours ce jeudi (21 mai), et le devoir c’est pour mardi prochain (26 mai),

Françoise Del Socorro

***************************************************************

Comment utiliser facilement le XSL ?

Un document XML contient des données structurées.

Un document XSL contient la page web (ou le fichier texte en output) + les données structurées.

Ce qui fait que XML + XSL <> HTML.

En HTML on peut avoir une liste de règles prédéfinies associées aux balises:

<html>Définit un document html.</html>

<head>Délimite l’en-tête.</head>

<body>Délimite le corps du document et permet de donner l’affichage à défaut pour tout le document.</body>

<p>Permet de sauter une ligne (angl = paragraph).

<br>Permet d’aller à la ligne (angl = line break).

<pre>Permet d’afficher le texte tel qu’il est préformatté dans le fichier texte.</pre>

<b>Permet de mettre le texte en gras.</b>

<i>Permet de mettre le texte en italique.</i>

<u>Permet de souligner le texte.</u>

<sup>Permet de mettre un texte en indice.</sup>

etc…

En XML, comme c’est la première fois que j’en fais, j’ai essayé de re-créer cette idée, mais ça a été un échec car ça ne sert pas à cela. Le XML ne présente pas le texte tel qu’il doit s’afficher et ne doit pas donner d’indices sur comment l’afficher.

Un document XML contient des données structurées dans le but de partager un corpus textuel avec d’autres chercheurs et sur lequel on peut effectuer des requêtes XPATH. Donc le document XSL contient les requêtes XPATH + l’HTML avec toutes ses balises fermées ou auto-fermées:

<p/> ou <p>texte</p>

<br/> ou <br>texte</br>

etc…

Donc on peut considérer le fichier XSL comme un fichier HTML enrichi.

1) Relation entre XML et XSL

Un document XML est bien formé si il contient au moins la déclaration XML <?xml version= »1.0″?> et que il est sauvegardé en .xml. Mais le français contient des signes diacritiques et donc il faut dire que le codage qu’on utilise c’est du latin 1: <?xml version= »1.0″ encoding= »iso-8859-1″?> pour que tous nos caractères soient valables. On pourrait également utiliser de l’UTF-8 qui est apparemment le codage utilisé dans MAC OS et LINUX.

Un document XML s’affiche comme un fichier HTML sur le navigateur s’il contient le lien vers le fichier XSL qui donne les règles d’affichage du document: <?xml-stylesheet type= »text/xsl » href= »nom-fichier.xsl »?>

Un document XML associé à une feuille de style XSL peut être transformé en un fichier HTML soit au moyen d’un éditeur XML (ex: cooktop, editix) soit au moyen de la commande Transform du programme SAXON:

Ex: Invite de commandes

C:\Users\fran>cd /

C:\>cd ./Fpgmes/Saxon

C:\Fpgmes\Saxon>.\saxonb9-1-0-6n\bin\Transform -t -s:\fran\aaa\art1.xml -xsl:\fran\aaa\style-art1.xsl -o:c:\fran\aaa\art1.html

(Sur cygwin c’est la même chose avec les slash à l’envers et il faut vérifier s’il préfère les chemins relatifs ou absolus / ou ./)

2) Relation entre XSL et HTML

On a le choix entre modifier les balises XML qui suggèrent un format de sortie HTML, ce qui est pénible car la plupart du temps on ne trouve pas comment faire:

XML:

<a href= »http://www.centrepompidou.fr/education/ressources/ENS-abstrait/ENS-abstrait.html »>la peinture abstraite</a>ne reflète pas<a href= »http://www.espacefrancais.com/realisme.html« >la réalité</a>

XSL:

<xsl:template match= »a »>

<xsl:choose>

<xsl:when test= »//a[@href] »>

<a href= »{@href} »>

<xsl:value-of select= ». »/><xsl:text/></a>

</xsl:when>

</xsl:choose>

</xsl:template>

Ou utiliser le fichier XSL comme un fichier HTML enrichi avec les requêtes XPATH.

En ce qui concerne XPATH, je fais mes tests sur XPathBuilder http://www.bubasoft.net/xpathbuilder/Xpathbuilder.aspx qui malgré tout ne reconnaît pas les accents, et je n’oublie pas de mettre //. Et là je crée ma page web entièrement sur le fichier XSL. Voici un exemple:

XML:

<?xml version= »1.0″ encoding= »iso-8859-1″ standalone= »no »?>
<?xml-stylesheet type= »text/xsl » href= »style-art3.xsl »?>
<document>
<phrase>
<syntagme cat= »GN »>
<token>
<categorie>D</categorie><lemme>le</lemme><vocable>L'</vocable>
</token>
<token>
<categorie>N</categorie><lemme>art</lemme><vocable>art</vocable>
</token>
<token>
<categorie>A</categorie><lemme>contemporain</lemme><vocable>contemporain</vocable>
</token>
</syntagme>
<syntagme cat= »GV »>
<token>
<categorie>V</categorie><lemme>plaire</lemme><vocable>plaît</vocable>
</token>
</syntagme>
<syntagme cat= »PO »>
<token>
<categorie>E</categorie><lemme>!</lemme><vocable>!</vocable>
</token>
</syntagme>
</phrase>
</document>

XSL:

<?xml version= »1.0″ encoding= »iso-8859-1″?>

<xsl:stylesheet xmlns:xsl= »http://www.w3.org/1999/XSL/Transform &raquo; version= »2.0″>

<xsl:output method= »html »/>

<xsl:template match= »/ »>

<html>

<head>

<title>Le titre de votre page</title>

<meta http-equiv= »content-type » content= »text/html; charset=windows-1250″/>

</head>

<body bgcolor= »lightpink » text= »mediumseagreen » link= »red » alink= »indigo » vlink= »gray » background = »./IMAGES/image-fond.jpg »>

<p align= »left »/><u>Auteur 1:</u> Liste de vocables:

<xsl:for-each select= »//vocable »>

<xsl:apply-templates select= ». »/><xsl:text> </xsl:text>

</xsl:for-each>

<p/><xsl:apply-templates select= »./document/phrase »/>

</body>

</html>

</xsl:template>

<xsl:template match= »//phrase »>

<p align= »left »>

<table bgcolor= »mediumseagreen »>

<tr><td><font color= »blue »>Auteur 2</font></td></tr>

<tr><td><font color= »lightpink »>

Liste de lemmes:

<xsl:for-each select= »//lemme »>

<b><xsl:apply-templates select= ». »/></b><xsl:text> </xsl:text>

</xsl:for-each>

</font></td></tr></table>

</p>

<p align= »center »>

<table bgcolor= »mediumseagreen »>

<tr><td><font color= »lightpink »>Auteur 3</font></td></tr>

<tr><td><font color= »lightblue »>

Liste de categories:

<xsl:for-each select= »//categorie »>

<pre><xsl:apply-templates select= ». »/></pre>

</xsl:for-each>

</font></td></tr></table>

</p>

<p align= »right »>

<table bgcolor= »#3034E0″>

<tr><td><font color= »greenyellow »>Auteur 4</font></td></tr>

<tr><td><font color= »lightcoral »>

Liste de syntagmes:

<xsl:for-each select= »//syntagme »>

<xsl:text> </xsl:text>

<xsl:value-of select= »name() »/>

<xsl:text> = </xsl:text>

<xsl:apply-templates select= »@cat »/>

<xsl:text> ,</xsl:text>

</xsl:for-each>

<br/>

<p/>

<xsl:for-each select= »//syntagme[@cat=’GN’] »>

<xsl:text> </xsl:text>

<xsl:value-of select= »@cat »/>

<xsl:text> = </xsl:text>

<xsl:apply-templates select= »//syntagme[@cat=’GN’]/token/categorie »/>

<xsl:text> ,</xsl:text>

</xsl:for-each>

<xsl:for-each select= »//syntagme[@cat=’GV’] »>

<xsl:text> </xsl:text>

<xsl:value-of select= »@cat »/>

<xsl:text> = </xsl:text>

<xsl:apply-templates select= »//syntagme[@cat=’GV’]/token/categorie »/>

<xsl:text> ,</xsl:text>

</xsl:for-each>

<xsl:for-each select= »//syntagme[@cat=’PO’] »>

<xsl:text> </xsl:text>

<xsl:value-of select= »@cat »/>

<xsl:text> = </xsl:text>

<xsl:apply-templates select= »//syntagme[@cat=’PO’]/token/categorie »/>

<xsl:text> .</xsl:text>

</xsl:for-each>

</font></td></tr></table>

</p>

</xsl:template>

</xsl:stylesheet>

Ainsi vous avez plus de liberté pour créer votre page web et moins de contraintes et de règles en conflit. Une fois que vous aurez choisi le format de votre page HTML, vous la mettez dans le XSL et puis voilà. Ce n’était pas mon idée de départ quand j’ai commencé à imaginer mon site mais c’est ma conclusion. Je mets les deux fichiers sur mon Bloop http://www.mybloop.com/francoisepeace pour que vous les testiez et Mourad va sûrement vous expliquer comment utiliser css et xsl au même temps.

Françoise Del Socorro