Bonjour,
Merci Erwy pour ta réponse
Avec un exemple ce serait plus claire
un exemple XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <?xml version="1.0"?>
<source>
<document>
<doc>
<cible>
<SOUScible1>cible-texte1</SOUScible1>
<SOUScible2>cible-texte2</SOUScible2>
</cible>
</doc>
<doc>
<cible>
<SOUScible1>2emeCible-texte1</SOUScible1>
<SOUScible2>2emeCible-texte2</SOUScible2>
</cible>
<NOTcible>
<sousNOTcible>contenu1</sousNOTcible>
<sousNOTcible>contenu2</sousNOTcible>
</NOTcible>
</doc>
</document>
</source> |
Voici l'XSLT
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 28 29 30 31 32 33 34
| <?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" doctype-system="http://www.w3.org/TR/REC-html40/loose.dtd"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="document">
<table border="1">
<xsl:apply-templates select="../document//cible"/>
</table>
<!--<xsl:apply-templates select="current()//*[not(self::cible)]"/>-->
</xsl:template>
<xsl:template match="cible">
<tr>
<xsl:apply-templates/>
</tr>
</xsl:template>
<xsl:template match="SOUScible1">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
<xsl:template match="SOUScible2">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
<xsl:template match="NOTcible">
<h4><xsl:value-of select="."/></h4>
</xsl:template>
</xsl:stylesheet> |
c'est OK pour avoir les noeuds <cible> en utilisant:
<xsl:apply-templates select="../document//cible"/>
ou
<xsl:apply-templates select="current()//cible"/>
ou
<xsl:apply-templates select="descendant::cible"/>
mais c'est le contraire qui pause problème
même avec
<xsl:apply-templates select="current()//*[not(self::cible)]"/>
merci pour votre aide
Partager