je débute en XSLT. Je suis confronté à un problème apparement rencontré souvent mais pour lequel je n'ai pas vraiment trouvé / compris la solution.
Je souhaite récupérer le texte d'un noeud, seulement de temps en temps, le texte est interrompu par un autre noeud et la fin du teste n'est pas récupérée. Avec un exemple c'est mieux :
<html> <body> <p class="a">voici le début du texte à récupérer <b> mais le problème </b> c'est de récupérer cette partie</p> </body> </html>
Comment je peux faire pour récupérer l'ensemble du noeud : le texte + les tags à l'intérieur de <p> </p>. Ou alors, concatener les 3 textes (avant <b>, entre <b> et </b> et après </b> ) ?
Marsh Posté le 02-06-2009 à 12:17:24
Bonjour,
je débute en XSLT. Je suis confronté à un problème apparement rencontré souvent mais pour lequel je n'ai pas vraiment trouvé / compris la solution.
Je souhaite récupérer le texte d'un noeud, seulement de temps en temps, le texte est interrompu par un autre noeud et la fin du teste n'est pas récupérée. Avec un exemple c'est mieux :
<html>
<body>
<p class="a">voici le début du texte à récupérer <b> mais le problème </b> c'est de récupérer cette partie</p>
</body>
</html>
Le script XSLT que j'ai écrit ressemble à ça :
<xsl:template match="/">
<SFAR>
<Document>
<xsl:for-each select="/html/body//p">
<xsl:call-template name="print"/>
</xsl:for-each>
</Document>
</SFAR>
</xsl:template>
<xsl:template name="print">
<xsl:choose>
<xsl:when test="@class='a'">
<xsl:call-template name="a"/>
</xsl:when>
<xsl:when test="@class='b'">
<xsl:call-template name="b"/>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="a">
<ParagraphA>
<xsl:choose>
<xsl:when test="text()!=''">
<xsl:value-of select="text()"/>
</xsl:when>
</xsl:choose>
</ParagraphA>
</xsl:template>
Comment je peux faire pour récupérer l'ensemble du noeud : le texte + les tags à l'intérieur de <p> </p>. Ou alors, concatener les 3 textes (avant <b>, entre <b> et </b> et après </b> ) ?
Merci de votre aide
Marcel