XML - TP

Maîtrise TAL



home

contact

outils

xml

xslt

xpath


 

 

XPATH


Tp n°7 : Utilisation d'Xpath dans le corpus Le Petit Prince



Afficher toutes les traductions tchèques
Pour cela, on spécifie le modèle qui s'applique à " phrase " pour qu'il n'affiche que les nœuds " traduction " de l'arbre dont l'attribut " lang " a pour valeur " tcheque ".
<xsl:template match="phrase">
<p><xsl:apply-templates select=".//traduction[@lang='tcheque']"/></p>
</xsl:template>

Pour afficher la traduction en tchèque de toutes les deuxième phrases
On spécifie un chemin dans l'arbre qui précise
(1) la position de l'élément " phrase " dans le nœud courant " paragraphe " : 2,
(2) le choix du nœud " traduction " dont l'attribut " lang " a pour valeur " tcheque ".
<xsl:template match="paragraphe">
<p><xsl:apply-templates select="phrase[2]//traduction[@lang='tcheque'] <xsl:text> </xsl:text>
</xsl:template>

Pour afficher la traduction en tchèque de toutes les deuxième phrases
On utilise les mêmes instructions en changeant la valeur de l'attribut lang " francais "
<xsl:template match="paragraphe">
<p><xsl:apply-templates select="phrase[2]//traduction[@lang='francais'] <xsl:text> </xsl:text>
</xsl:template>

Pour afficher toutes les traductions en français des phrases du narrateur
On spécifie le chemin Xpath qui précise
(1) Le choix des phrases dont l'attribut " loc " (pour locuteur) est " narrateur "
(2) le choix du nœud " traduction " dont l'attribut " lang " a pour valeur " tcheque ".
<xsl:template match="paragraphe">
<font color="red"><xsl:apply-templates select="phrase[@loc='narrateur']//traduction[@lang='francais']"/></font>
<xsl:text></xsl:text>
</xsl:template>

Pour afficher toutes les phrases du Petit Prince en français qui comporte le caractère " ? "
Les phrases du Petit Prince n'apparaissent que dans les dialogues . On se concentre donc sur ceux-ci. On applique le modèle en le spécifiant grâce au chemin Xpath " ".//phrase[@loc='LePetitPrince']//traduction[@lang='francais'] //mot[contains(text(), '?')]"" qui permet de n'afficher que les phrases du petit Prince en français qui contiennent le caractère "?".
<xsl:template match="dialogue">
<i> <blockquote><font color="yellow">
<xsl:apply-templates select=".//phrase[@loc='LePetitPrince']//traduction[@lang='francais'] //mot[contains(text(), '?')]"/>
<xsl:text> </xsl:text>
</font></blockquote></i>
</xsl:template>


Pour afficher les phrases du narrateur qui suivent une question du Petit Prince
Nous réutilisons la structure qui nous a permis d'obtenir les phrases du PP qui contenait un point d'interrogation. On la transforme en condition à l'application d'un modèle qui applique les phrases du narrateur en français qui suivent cette question grâce à l'instruction " following::phrase ". Cette instruction permet de parcourir l'arbre de l'instance de document en utilisant les axes
<xsl:template match="phrase[@loc='LePetitPrince']">
<xsl:choose>
<xsl:when test=".//traduction[@lang='francais']">
<xsl:for-each select=".//mot[contains(text(), '?')]">
<font color="red"><xsl:value-of select="..//following::phrase[@loc='narrateur']//traduction[@lang='francais']"/>
<xsl:text> </xsl:text></font>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:template>

Pour afficher les phrases du Petit Prince qui répond au narrateur,
On utilise une structure identique en inversant les valeurs de l'attribut " loc "
<xsl:template match="phrase[@loc='narrateur']">
<xsl:choose>
<xsl:when test=".//traduction[@lang='francais']">
<xsl:for-each select=".//mot[contains(text(), '?')]">
<font color="red">
<xsl:value-of select="..//following::phrase[@loc='LePetitPrince']//traduction[@lang='francais']"/>
<xsl:text> </xsl:text></font>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:template>

XML

XSLT

XPATH