Bonjour,

j'ai bien vu qu'un post similaire avait été posté, mais la solution qui a été proposée ne correspond pas à mon problème.
J'ai fait plusieurs tests sans succès.
voici mon xml de départ :

<catalogue>

      <Prix_Detail>

         <Prix prixID="1502" Titre="Travaux préalables"/>

         <description>blabla</description>

         <UniteMesure UMID="MTK"/>

         <TauxTVA Taux="19.6" TVAID="VAT"/>

         <Nature NatureID="02" Titre="TRAVAUX PREPARATOIRES"/>

      </Prix_Detail>

      <Prix_Detail>

         <Prix prixID="2151" Titre="Installation de chantier"/>

         <description>blabla</description>

         <UniteMesure UMID="C62"/>

         <TauxTVA Taux="19.6" TVAID="VAT"/>

         <Nature NatureID="02" Titre="TRAVAUX PREPARATOIRES"/>

      </Prix_Detail>
</catalogue>


on peut voir ici que les prix du catalogue ont une nature, pour cela, je dois les regrouper selon leur nature (j'ai d'ailleurs posté un sujet sur cela).
Or, certains prix du catalogue peuvent ne pas contenir d'élément <Nature>.

J'aimerais, dans mon fichier xsl, pouvoir faire un traitement différent dans le cas où j'ai une nature et dans le cas où je n'en ai pas.
Pour cela, j'aimerais faire un traitement dans le cas où un prix ne contient pas de natures, je dois donc faire une condition "si le prix ne contient pas de natures".

J'ai essayé plusieurs solutions :

-
<xsl:if test="node()[not(Nature)]">
	<xsl:element name="toto"> tata</xsl:element>
</xsl:if>


et
-
<xsl:if test="./Prix_Detail/Nature[@NatureID='']=''"> </xsl:if>


sans succès, pourriez-vous m'éclairer s'il vous plait?? Smiley cligne
merci d'avance
Bonjour!

Le plus simple, tout bêtement:

<xsl:if test="not(Nature)">

Si l'élément "Nature" n'existe pas, l'évaluation de l'expression XPath "Nature" renvoie false... Il suffit donc de prendre son complément logique Smiley cligne
Je me suis servie de choose when otherwise, et ça marche très bien, mais je garde ta solution sous le coude Smiley cligne merci à toi!
sinon encore plus simple pour tester l'existence de ta balise nature
<xsl:if test="catalogue/Prix_Detail/Nature"> (marche aussi avec xsl:choose)

ce qui veux tout simplement "si Nature existe faire...", c'est un syntaxe courte.
Modifié par freezystem (20 Nov 2009 - 14:16)