je le XML document suivant (partiel):Comment appliquer un modèle XSL uniquement aux éléments contenant un enfant avec une valeur d'attribut et une valeur d'élément particulières?
<export>
<table name="CLIENT">
<row>
<col name="CODE_CLIENT" type="System.String">1000010026</col>
<col name="LIBELLE" type="System.String">Test|</col>
<col name="PROSPECT" type="System.Decimal">1</col>
</row>
<row>
<col name="CODE_CLIENT" type="System.String">1000010025</col>
<col name="LIBELLE" type="System.String">Rue de la 2eme ad|</col>
<col name="PROSPECT" type="System.Decimal">0</col>
</row>
<row>
<col name="CODE_CLIENT" type="System.String">1000010125</col>
<col name="LIBELLE" type="System.String">Test4</col>
<col name="PROSPECT" type="System.Decimal">0</col>
</row>
<row>
<col name="CODE_CLIENT" type="System.String">1000010035</col>
<col name="LIBELLE" type="System.String">Rue</col>
<col name="PROSPECT" type="System.Decimal">1</col>
</row>
</table></export>
et XSL suivant:
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="export/table[@name='CLIENT']"/>
</xsl:template>
<xsl:template match="row">
SOME TEMPLATE CODE
</xsl:template>
</xsl:stylesheet>
je voudrais appliquer le premier modèle (match = "/") uniquement à la " rows "qui ont une valeur de prospect à 1. Dans mon exemple, cela ne ferait que transformer les première et dernière lignes.
J'ai essayé
<xsl:apply-templates select="export/table[@name='CLIENT']/row[col[@name='PROSPECT']=1]"/>
mais cela m'a donné une erreur de syntaxe.
Quelqu'un sait comment procéder?
Tomalak, merci pour votre réponse. J'ai essayé votre suggestion et j'ai eu la même erreur que j'avais avec ma version: ']' requis, '@' trouvé :-( – Jalil
Tomalak, je suis désolé, je n'ai pas essayé exactement votre solution mais directement: Je vais essayer votre solution comme c'est maintenant –
Jalil
En passant, s'il vous plaît dire au processeur XSLT que vous utilisez – Tomalak