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] Recuperation des noeuds Entre Deux Commentaires


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    yos
    yos est déconnecté
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 140
    Points : 60
    Points
    60
    Par défaut [XPath] Recuperation des noeuds Entre Deux Commentaires
    Salut tout le monde,
    A partir de cet exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    <!--debut contenu-->
    ...node()...
    <!--Fin contenu-->
    ....
    comment extraire les noeuds se trouvant entre les deux commentaires ?

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Normalement les commentaires ne devraient pas servir de délimiteurs...

    si c'est le cas alors tu as un problème de conception dans ton XML... il faut que tu revoies sa structure...

    ensuite, tu est trop imprécis, quel langage utilises-tu (XSLT ? XPath ?) ? éventuellement quel langage externe et quelle library ? que vex-tu dire par extraire ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    yos
    yos est déconnecté
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 140
    Points : 60
    Points
    60
    Par défaut
    désolé je n'était pas assez précis
    donc c'est du xslt appliquer sur du xhtml
    j'utilise xslt pour filter les pages xhtml et garder juste les parties du contenu qui m'intéresse
    les commentaires sont mes seuls repères, je n'ai donc pas le choix

    quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="//comment()[contains(.,'debut contenu')]">
       <xsl:copy-of select="following-sibling::node()"/>
    </xsl:template>
    sauf qu'il faut que je me limitte à <!--Fin contenu-->


    merci pour votre aide

  4. #4
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    il faut utiliser certainement le prédicat preceding-sibling mais ça ne semble pas marcher chez moi...bizarre

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="//comment()[contains(.,'debut contenu')]">
       <xsl:copy-of select="following-sibling::node()[not(contains(./preceding-sibling::comment(), 'fin contenu')) and not(self::comment())]"/>
    </xsl:template>
    bien entendu, il faut que le commentaire avec le texte 'fin contenu' soit unique...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  6. #6
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    et puis "//" pour le template match ne sert à rien...

  7. #7
    yos
    yos est déconnecté
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 140
    Points : 60
    Points
    60
    Par défaut
    Merci pour votre aide,
    Voici mon code :
    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
    <xsl:template match="/">
    	<html xmlns="http://www.w3.org/1999/xhtml">			
    	 <xsl:copy-of select="//xhtml:head"/>
    	 <body text="#000000" bgcolor="#FFFFFF">
    	  <xsl:apply-templates select="//comment()[contains(.,'Debut contenu')]"/>					
    	 </body> 
        	</html>
    </xsl:template>
     
     
    <!--all--> 	
     <xsl:template match="*|text()|@*|comment()"> 
      <xsl:copy> 
       <xsl:apply-templates select="node()|@*|text()|comment()"/>
      </xsl:copy>
     </xsl:template>
    <!--contenu util-->
     <xsl:template match="comment()[contains(.,'Debut contenu')]">
      <xsl:apply-templates select="following::node()"/> 
     </xsl:template>
    <!--filtrage-->
     <xsl:template match="node()[preceding::comment()[contains(., 'Fin contenu')]]"/>
     <xsl:template match="xhtml:a"/>
    Je récupère bien mon contenu util mais problème en cas de noeud hiérarchique, exemple : <table><tr><td>....
    j'ai un dédoublement de rendu (du text en double)
    comment fair pour récupérer un noeud tel quel
    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="following::node()[not(descendant::node())]"/>
    mais même problème

    merci encore pour votre aide

Discussions similaires

  1. [Xpath] Sélection des noeuds dont un attribut
    Par toxine dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 29/01/2007, 14h22
  2. [ADO.Net][VB.NET] Comment copier des données entre deux BDD différentes ?
    Par maddog2032 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 06/06/2005, 11h01
  3. comment faire des espaces entre deux liens ???
    Par baaps dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 24/03/2005, 09h53
  4. [TP] Echanger des données entre deux programmes
    Par ILIAS Raphaël dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 22/03/2005, 09h31
  5. Réponses: 7
    Dernier message: 30/12/2004, 12h01

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