Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1295 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  Obtenir la position d'un noeud

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Obtenir la position d'un noeud

n°1447776
haazheel
Posté le 26-09-2006 à 18:05:12  profilanswer
 

Bonjour à tous,
 
pour le moment, j'ai la structure XML suivante:
 

Code :
  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2. <Racine>
  3. <Item titre="Exécuter" lien="TMainForm.htm" id="0" />
  4. <Chapitre titre="Analyses" lien="" id="1">
  5.  <Retrait>
  6.   <Chapitre titre="Enregistrer les statistiques et les stratégies" lien="" id="2">
  7.    <Retrait>
  8.     <Chapitre titre="Créer un nouveau séquençage" lien="" id="3">
  9.      <Retrait>
  10.       <Item titre="Premières informations" lien="" id="4" />
  11.       <Item titre="Equipe à domicile" lien="" id="5" />
  12.       <Item titre="Equipe à l'extérieur" lien="" id="6" />
  13.       <Item titre="Options d'enregistrement" lien="" id="7" />
  14.      </Retrait>
  15.     </Chapitre>
  16.    </Retrait>
  17.   </Chapitre>
  18.  </Retrait>
  19. </Chapitre>
  20. </Racine>


 
Avec le XSL suivant (uniquement le template pour Item)
 

Code :
  1. <xsl:template match="Item">
  2.     <div>
  3.  <img src="../../Images/dot.gif" alt="" />
  4.  <a href="#" onclick="showhide(document.getElementById('d{@id}'),'swap'); ajax_loadContent('d{@id}','{@lien}'); return false">
  5.   <xsl:value-of select="@titre" />
  6.  </a>
  7.  <div id="d{@id}" class="box" style="display:none;"></div>
  8. </div>
  9. </xsl:template>


 
Comme vous pouvez le voir, j'utilise l'attribut id des noeuds pour générer un cadre invisible avec une id unique, que je mets à jour avec AJAX.
 
Bref, ce que je me demandais, c'est s'il est possible que je me passe des attributs id dans le XML, et donc utiliser une fonction XSL qui me retourne l'index du noeud actuel, par rapport à la racine du XML.
 
J'ai essayé de le récupérer grâce à <xsl:value-of select="position()" />, mais ça n'indique que l'index par rapport au noeud père (et par incréments de 2  :??: )
 
Merci d'avance
 
Mike

mood
Publicité
Posté le 26-09-2006 à 18:05:12  profilanswer
 

n°1447971
rx__
Paint It Black
Posté le 27-09-2006 à 08:56:59  profilanswer
 

Si c'est un simple id que tu veux, il existe la fonction generate-id().

n°1448959
haazheel
Posté le 28-09-2006 à 17:36:09  profilanswer
 

Bon en fait je viens de remarquer que la fonction generate-id() me renvoie un id différent pour chaque noeud chaque fois que je réactualise la page.
 
J'ai vu la fonction <xsl:number>, mais j'ai un petit souci avec...
 
Je l'utilise comme suit:
 

Code :
  1. <div class="box" style="display:none;">
  2.   <xsl:attribute name="id">
  3.     <xsl:number level="any" count="Item|Chapitre" format="1" />
  4.   </xsl:attribute>
  5. </div>


 
Seulement il me sort du HTML avec des espaces dont je ne veux pas:
 

Code :
  1. <div class="box" style="display:none;" id="
  2.       d5"></div>


 
et moi je veux ça:
 

Code :
  1. <div class="box" style="display:none;" id="d5"></div>


 
Comment je peux faire ça?
 
J'ai essayé d'utiliser <xsl:text> mais sans succès...

n°1448979
MagicBuzz
Posté le 28-09-2006 à 17:49:04  profilanswer
 

Code :
  1. <div class="box" style="display:none;">
  2.   <xsl:attribute name="id"><xsl:number level="any" count="Item|Chapitre" format="1" /></xsl:attribute>
  3. </div>


 [:spamafote]

n°1449250
haazheel
Posté le 29-09-2006 à 00:16:31  profilanswer
 

C'est pas ça. J'aimerai un 'd' avant l'id du noeud ;)
 
Et les espaces qu'il met entre le 'd' et l'id fait merder le reste...


Message édité par haazheel le 29-09-2006 à 00:17:05
n°1449337
MagicBuzz
Posté le 29-09-2006 à 09:49:50  profilanswer
 

comprends pas. "tu veux un 'd' avant l'id du noeud ? késako ?
 
Par contre, transformer :  

<div class="box" style="display:none;" id="                
d5"></div>


 
en

<div class="box" style="display:none;" id="d5"></div>


 
c'est juste un problème d'espace + retour à la ligne à l'intérieur de ton attribut :spamafote:

n°1449614
haazheel
Posté le 29-09-2006 à 13:33:24  profilanswer
 

MagicBuzz a écrit :

comprends pas. "tu veux un 'd' avant l'id du noeud ? késako ?
 
Par contre, transformer :  

<div class="box" style="display:none;" id="                
d5"></div>


 
en

<div class="box" style="display:none;" id="d5"></div>


 
c'est juste un problème d'espace + retour à la ligne à l'intérieur de ton attribut :spamafote:


 
Le code que tu m'as donné  

Code :
  1. <div class="box" style="display:none;">
  2.     <xsl:attribute name="id"><xsl:number level="any" count="Item|Chapitre" format="1" /></xsl:attribute>
  3. </div>


 
sort le HTML suivant:
 

Code :
  1. <div class="box" style="display:none;" id="5"></div>


 
Or moi je voudrais ça:
 

Code :
  1. <div class="box" style="display:none;" id="d5"></div>


 
Mais j'ai ça:
 

Code :
  1. <div class="box" style="display:none;" id="
  2.                 d5"></div>

n°1453456
MagicBuzz
Posté le 06-10-2006 à 16:03:37  profilanswer
 

Code :
  1. <div class="box" style="display:none;">
  2.     <xsl:attribute name="id">d<xsl:number level="any" count="Item|Chapitre" format="1" /></xsl:attribute>
  3. </div>


:spamafote:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  Obtenir la position d'un noeud

 

Sujets relatifs
[Ruby] Position de la souris en GTK2probleme de position pour un info bulle
XPath et noeud avec :[APACHE] Obtenir le login de la personne connectée
[C# XmlDocument] Ajout d'un noeud d'un document dans un autre ...Obtenir le bon Path
Connaitre la position d'un élément en position relative en javascriptBatch - Obtenir le poids d'un fichier avec la commande ForFile.exe
obtenir somme des données en mysqlcomment garder la position du scroll??
Plus de sujets relatifs à : Obtenir la position d'un noeud


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR