[XPath] Sélectionner les éléments qui n'ont pas un certain attribut
Comme dans cette discussion résolue :
http://www.developpez.net/forums/sho...d.php?t=177183
je voudrais sélectionner dans le noeud courant, les élémente 'chose' qui ont un certain attribut 'bidule'.
Je fais ceci :
Et je voudrais l'inverse, les éléments 'chose' qui n'ont pas cet attribut 'bidule'.
J'ai essayé :
Code:
chose[not(@bidule)]
ou
Code:
chose[count(@bidule)=0]
mais sans succès.
Une idée ?
Exemple de code XML et XSLT
Voici un exemple de code xml :
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| <?xml version="1.0" encoding="ISO-8859-15" ?>
<!DOCTYPE form PUBLIC "-//DTD Forms 1.0//EN" "formdescriptor.dtd">
<form id="FD_TERR_task_131" module_id="4" ><!--module_id="": dterminer-->
<page>
<section root="true">
<fields>
<dynamical-field id="CD_TYP_LOC" visual="combo" mini-form="FD_mini_form_TERR">
<format type="string" size="20"/>
<!--required/-->
<!--valeur par dfaut: vide-->
<i18nid>cd_typ_loc_lib</i18nid>
<entity>request</entity>
<listid>LD_LOC</listid>
</dynamical-field>
<dynamical-field id="CD_TYP_REV" visual="combo" mini-form="FD_mini_form_TERR">
<format type="string" size="20"/>
<!--required/-->
<!--valeur par dfaut: vide-->
<i18nid>cd_typ_rev_lib</i18nid>
<entity>request</entity>
<listid>LD_REV</listid>
</dynamical-field>
<dynamical-field id="VOL_T" mini-form="FD_table_TERR">
<format type="string" size="5">
<params>
<param id="regex">(([0-9]*)(,[0-9]{1,2})?)</param>
</params>
</format>
<!--condition:valeur par dfault=L*l*P-->
<disabled/>
<i18nid>vol_lib</i18nid>
<entity>request</entity>
</dynamical-field>
<dynamical-field id="SURF_T" mini-form="FD_table_TERR">
<format type="string" size="5">
<params>
<param id="regex">(([0-9]*)(,[0-9]{1,2})?)</param>
</params>
</format>
<!--condition:valeur par dfault=l*P-->
<disabled/>
<i18nid>surf_lib</i18nid>
<entity>request</entity>
</dynamical-field>
<dynamical-field id="BLINDAGE" mini-form="FD_mini_form_TERR">
<format type="string" size="5">
<params>
<param id="regex">(([0-9]*)(,[0-9]{1,2})?)</param>
</params>
</format>
<i18nid>blindage_lib</i18nid>
<!--valeur par dfaut: vide-->
<entity>request</entity>
</dynamical-field>
<dynamical-field id="DEP_NAPPE" mini-form="FD_mini_form_TERR">
<format type="string" size="5">
<params>
<param id="regex">(([0-9]*)(,[0-9]{1,2})?)</param>
</params>
</format>
<!--valeur par dfaut: vide-->
<i18nid>dep_nappe_lib</i18nid>
<entity>request</entity>
</dynamical-field>
<dynamical-field id="EP_REV" mini-form="FD_mini_form_TERR">
<format type="string" size="5">
<params>
<param id="regex">(([0-9]*)(,[0-9]{1,2})?)</param>
</params>
</format>
<!--required/-->
<!--valeur par dfaut: vide-->
<i18nid>ep_rev_lib</i18nid>
<entity>request</entity>
</dynamical-field>
</fields>
<mini-form id="FD_mini_form_TERR">
<title>Terrassement</title>
<displaymode>classic</displaymode>
<mini-form id="FD_table_TERR">
<title>Terrassement</title>
<displaymode>table</displaymode>
</mini-form>
</mini-form>
</section>
</page>
</form> |
Et voici un exemple de boucle qui ne filtre aucun de ces champs dynamiques :
Code:
1 2
|
<xsl:for-each select="//form[@id=$formdescriptorid]/page/section/fields/dynamical-field[not(@mini-form)]"> |
Ca devrait, non ?