Bonjour à tous, j’espère que vous allez bien.
J'ai une petit problème à vous soumettre. J'aimerais extraire tous les nœuds formes du nœud w courant jusqu’à une certaine condition. Je précise que je viens de commencer XSLT et XPath il y a quelques jours.
Mon fichier xml ressemble à ça (en beaucoup plus gros):
Mon objectif serait de récupérer la forme du nœud w courant jusqu'à la forme qui contient un point (fin de phrase), ici "exemple." pour ensuite reconstruire la phrase complète.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <w><forme>la</forme><lemme>le</lemme><categorie>DETDFS</categorie></w><w><forme>grande</forme><lemme>grand</lemme><categorie>ADJFS</categorie></w><w><forme>douleur</forme><lemme>douleur</lemme><categorie>NCFS</categorie></w><w><forme>du</forme><lemme>du</lemme><categorie>DETDMS</categorie></w><w><forme>père</forme><lemme>père</lemme><categorie>NCMS</categorie></w><w><forme>duchesne</forme><lemme>duchesne</lemme><categorie>NCMS</categorie></w><forme>exemple.</forme><lemme>exemple.</lemme><categorie>NCMS</categorie></w>....
Pour l'instant je n'arrive qu'à sélectionner la forme avec le point.
Dans l'idéal, j'aimerais créer une template récursive pour récupérer l'ensemble des phrases à partir des formes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 following-sibling::w[contains(forme, '.')][1]/forme
Je n'emploie pas sûrement les bons termes à chaque mais je suis débutant.
J'ai deja commencé à écrire une template pour cela. Je fais des efforts mais c'est trop dur pour moi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <xsl:template name="concat"> <xsl:param name="liste" /> <xsl:param name="result" select="''"/> <xsl:choose> <xsl:when test="$liste"> <xsl:call-template name="concat"> <xsl:with-param name="liste" select="$liste[position() > 1]" /> <xsl:with-param name="result" select="concat($result, ' ', $liste[1])" /> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$result" disable-output-escaping="no" /> </xsl:otherwise> </xsl:choose> </xsl:template>
Partager