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]Inclure des regles xsl selon des cas


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Points : 46
    Points
    46
    Par défaut [XSLT]Inclure des regles xsl selon des cas
    Bonjour,

    Je souhaiterai inclure dans un xsl des regles qui sont defini dans d'autre xsl. Je m'explique.

    En fait j'ai un xsl qui va parser un document XML et la valeur d'une variable
    si ma variable est egale à 1 alors je veux appliquer le fichier A.xsl
    si ma variable =2 alors je veux appliquer le fichier B.xsl

    et ainis de suite

    Est ce queu vous savez comment je peux faire car mon probleme est que je ne vois pas comment inclure des regles venant d'un autre xsl.

    Merci de bien vouloir m'aider.

  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,

    Est-ce que tes templates sont identiques dans les deux feuilles de styles ? (par identique, je veux dire qu'ils ont des attributs match identiques, pas qu'ils exécutent le même code, évidemment)

    Si c'est le cas, il suffit d'importer B.xsl dans A.xsl avec un <xsl:import>. Par contre, les templates de B.xsl auront une priorité inférieure à celle de A.xsl, et ce seront ceux de A.xsl qui seront exécutés lors d'un <xsl:apply-templates />. On pourra faire néammoins appel explicitement aux templates de B.xsl en utilisant <xsl:apply-imports />. Ce qui donne, pour A.xsl :

    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
    <xsl:stylesheet ...>
     
      <xsl:import href="B.xsl" />
     
      <xsl:template match="truc">
        <xsl:choose>
          <xsl:when test="$ma-variable = 1">
            <!-- On exécute un certaine code -->
            ...
          </xsl:when>
          <xsl:otherwise>
            <!-- On exécute le template "matchant" l'élément truc qui se trouve dans B.xsl -->
            <xsl:apply-imports />
          </xsl:otherwise>
        </xsl:choose>
      </xsl:template>
    Le système d'importation de XSLT est un peu analogue à l'héritage tel qu'il existe dans des langages comme Java.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Points : 46
    Points
    46
    Par défaut Reponse
    en fait A.xsl est prioritaire par rapport a B.xsl c pour ca que je fais une comparasion sur ma variable comme ca je peux invoquer le fichier xsl selon le niveau de priorité.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Points : 46
    Points
    46
    Par défaut Reponse
    Mes templates ne sont pas identique.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Points : 46
    Points
    46
    Par défaut J'aurai un autre question du meme genre
    Dans mon xsl qui va appeler mon autre xsl comment puis je faire un test sur l'existence de mon fichier?

    En tant merci des reponses ca m'ouvre d'autres possibilités.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Points : 46
    Points
    46
    Par défaut Probleme sur les imports en xsl
    En fait il se trouve que le nom du xsl que je dois importer se deduit a partir du nom d'un de mes attribut de mon xsl. Il faut donc que je trouve le nom de mon xsl par un calcul.

    Comme les xsl:import doivent etre placer apres <xsl:stylesheet> cela devient impossible d'utiliser cette solution.

  7. #7
    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
    M'est avis que tu vas devoir revoir l'architecture de l'ensemble...

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/09/2013, 12h41
  2. générer des colonnes automatiquement selon des formules
    Par Platon d'athene dans le forum Excel
    Réponses: 3
    Dernier message: 23/06/2012, 13h48
  3. [XSLT] est ce que xsl génére des espaces blancs?
    Par luna007 dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 02/02/2008, 16h53
  4. Réponses: 2
    Dernier message: 16/05/2006, 17h02
  5. Supprimer des sous-dossiers selon des critères
    Par Dertron dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 18/01/2006, 14h33

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