cibler l'extraction du text
bonjour,
pour mieux poser ma question voici un exemple
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| ...
<table>
<tr>...</tr>
<tr>
<td>
<b>Titre</b>
<b>INDICATIONS</b>
<br />
<br />
text1
<br />
text2
<br />
text3
<br />
<br />
<br />
<b>conseils</b>
<br />
<br />
text4
<br />
<br />
</td>
</tr>
<tr>...</tr>
</table> |
A partir de cette source j'aimerai pouvoir extraire text1 text2 text3
Voici l' XSL
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <xsl:template match="/">
<xsl:element name="doc">
<xsl:choose>
<xsl:when test="//b[contains(.,'INDICATIONS')]">
<xsl:element name="index">
<xsl:attribute name="item">
<xsl:text>IND</xsl:text>
</xsl:attribute>
<xsl:value-of select="//b[contains(.,'INDICATIONS')]/following-sibling::text()"/>
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:element>
</xsl:template> |
cela ne me recupère que text1 (idem avec following::text())
comment recupérer text2 et text3
Merci pour votre aide
Re: cibler l'extraction du text
Bonjour,
Citation:
Envoyé par yos
cela ne me recupère que text1 (idem avec following::text())
C'est normal : xsl:value-of convertit en chaîne la variable passée en paramètre et une liste de noeud convertie en chaîne renvoie le contenu du premier noeud de la liste. La solution est celle de tiscars, utiliser un for-each pour faire une itération sur tous les noeuds text() sélectionnés.
L'axe preceding étant assez lent, il est préférable d'utiliser des axes moins "coûteux" :
Code:
1 2 3
| <xsl:for-each select="//b[contains(.,'INDICATIONS')]/../text()">
<xsl:value-of select="."/>
</xsl:for-each> |