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 :

[XSLT] Définir un ordre de traitement dans un fichier


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut [XSLT] Définir un ordre de traitement dans un fichier
    Salut à tous,
    Je voudrai savoir s'il est possible dans un fichier xsl de définir un ordre de traitement de sorte à traiter un premier type de comportement exemple filtrer des infos, et dans un second temps faire une numérotation...
    En exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <xsl:template match="toto">
    <xsl:if test='(contains(@tata, $param1)'>	
    <xsl:apply-templates/>
    </xsl:if>
    </xsl:template>
     
    <xsl:template match="toto/titre">
    <xsl:number level="multiple" count="toto" format="1"/>
    <xsl:apply-templates/>
    </xsl:template>
    je voudrai faire une première passe sur "toto" et traiter les filtres
    et en deuxième passe générer ma numérotation du titre de toto.
    Le problème que j'ai, c'est qu'avec ce qui précède le filtre s'applique mais mais la numérotation n'est pas correct car il passe de 1 à 3 si j'applique le filtre sur le n°2
    Qu'en pensez-vous?

    Je précise quand même que je n'ai pas la possibilité de faire le traitement en deux temps dans deux fichier distincts.

    Merci de votre aide d'urgence

    Si vous avez besoin d'exemple plus détaillé, dites moi

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    Merci Erwy de ta réponse mais ce n'est pas très exactement ce que je veux. En fait je crois même que mon problème est ailleurs car mon filtre fonctionne bien. Seulement c'est la numérotation qui ne se met pas à jour. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <xsl:template match="Chapitre">
    	<xsl:if test='contains(@brand, $param1) or string-length(@brand) = 0)'>	
    	<xsl:apply-templates/>
    	</xsl:if>
    </xsl:template>
     
     
    <xsl:template match="Title">	
    <xsl:number level="multiple" count="Chapitre" format="1"/>
    <xsl:apply-templates/>
    <fo:block id="{generate-id(.)}"/>
    </xsl:template>
    Avec ce code le contenu de mon chapitre ne s'affiche pas si mon filtre est vrai c'àd si le contenu de $param1 est sélectionné, seulement la numérotation de mes chapitres restants deviennent incohérentes. Elle passe par exple de 1.1 toto à 1.3 tata si c'est le chapitre 1.2 qui est filtré.
    Et du coté de mon sommaire aussi les titres des chapitres filtrés s'affichent avec comme num page 0.
    J'ai fait un test avec priority mais je n'ai pas pu permettre l'actualisation de la numérotation.

    Je me suis dit que si j'arrive à faire passer un fichier xsl en priorité sur les autres, je pourrai faire une première passe pour traiter le filtre et ensuite appliquer les autres fichiers xsl qui gèrent la numérotation et le sommaire. Mais comment faire ça dans une seule et même transformation?
    Si quelqu'un à une idée...

  4. #4
    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,

    il faut que l'expression XPath dans l'attribut « count » de xsl:number comprenne le même filtre ; par défaut, xsl:number opère sur tout le document XML, pas seulement sur les éléments sélectionnés en cours de traitement par un template.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    Je te kiffe!!!

    ça à marcher...Je te remercie bcp

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/09/2009, 09h35
  2. Réponses: 4
    Dernier message: 10/04/2008, 22h23
  3. Définir l'ordre des onglets dans un TabControl
    Par soso78 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 20/12/2007, 14h57
  4. [XSLT]Probléme avec une fonction php dans un fichier xsl!
    Par Mo_Poly dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 29/10/2007, 07h32
  5. Réponses: 1
    Dernier message: 02/05/2007, 15h16

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