IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XPath] Sélectionner les éléments qui n'ont pas un certain attribut


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 35
    Points : 14
    Points
    14
    Par défaut [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é :
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chose[count(@bidule)=0]
    mais sans succès.

    Une idée ?

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    Citation Envoyé par lebechen
    mais sans succès.
    Ca veut dire quoi, qu'il t'a sélectionné tous les chose qu'ils aient un attribut bidule ou non, ou qu'il te renvoie un résultat vide ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 35
    Points : 14
    Points
    14
    Par défaut
    J'ai refait un test avec
    Il m'affiche tous les noeuds 'chose' sans filtrer ceux qui ont cet attribut.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 35
    Points : 14
    Points
    14
    Par défaut
    J'ai un autre problème avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    			<xsl:variable name="miniform1Id" select="//form[@id=$formdescriptorid]/page/section/mini-form/@id"/>
     
    			<xsl:for-each select="//form[@id=$formdescriptorid]/page/section/fields/dynamical-field[@mini-form=$miniform1Id]">
    				<fo:table-column column-width="20pt"/>
    			</xsl:for-each>
    où il ne me crée aucune colonne alors que j'ai bien des noeud 'dynamical-field' qui comporte l'attribut 'miniform' égal à la variable $miniform1Id dans certains cas

  5. #5
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Pour ton premier problème, tu devrais donner un extrait de XML et de code XSLT... Parce que là, au vu des maigres éléments dont nous disposons, il n'y a aucune raison pour que ça ne fonctionne pas... C'est comme dans X-Files, la vérité doit être ailleurs (tu connaîtrais pas l'identité du père de l'enfant de Scully, par hasard ?)...
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 35
    Points : 14
    Points
    14
    Par défaut Exemple de code XML et XSLT
    Voici un exemple de code xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:for-each select="//form[@id=$formdescriptorid]/page/section/fields/dynamical-field[not(@mini-form)]">
    Ca devrait, non ?

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 35
    Points : 14
    Points
    14
    Par défaut
    Grosse méprise de ma part.


    Le fichier xml que je vous ai passé est retravaillé vers un autre flux en étant remodelé au passage.

    On transforme certains attributs qui deviennent des labels.

    Donc mes tests sont à écrire différemment (en vérifiant si un noeud comporte un élément fils ou non comme dans l'autre fil de discussion résolu).

    Excusez-moi du dérangement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rechercher les noeuds vides et ceux qui n'ont pas d'attributs
    Par Egidius dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 20/11/2014, 12h40
  2. [XL-2010] Lister les fichier d'un répertoire qui n'ont pas encore été listés
    Par QuestVba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/10/2014, 10h03
  3. Réponses: 3
    Dernier message: 06/02/2008, 17h23
  4. [XSL] Sélectionner les éléments qui n'ont pas un certain fils
    Par lebechen dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 05/07/2006, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo