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 :

Template XHTML


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut Template XHTML
    Bonjour,

    Contexte :
    Je développe une application de gestion de formations à l'intentions de ... formateurs :-)
    Dans une page, on visualise la liste des stagiaires d'un stage et on peut cliquer sur un lien ou bouton pour imprimer une attestation de stage pour chacun des stagiaires. J'ai choisi une sortie des documents en HTML avec gestions des sauts de page via CSS. Donc l'impression de mon doc résultat HTML me délivrera les attestations de stage à la queue leu leu.

    Technique :
    Le modèle d'attestation de stage est réalisé en XHTML, je pensais ensuite contituer une grappe XML contenant et les données (les stagiaires) et le modèle xHTML.
    Le modèle xHTML contient des <xsl:value-of> qui seront ultérieurement remplacées par les données des stagiaires.

    Si je "matche" un stagiaire, j'aimerais pouvoir appeler un template qui va copier le modèle HTML en lui appliquant une transformation (remplacement des <xsl:value-of> par les données du stagiaire courant).

    L'objectif est que le modèle HTML soit strictement indépendant de la feuille XSL et non pas écrit dans une règle à l'intérieur de la feuille xsl. J'ai pensé à charger le modèle dans une variable, style <xsl:variable name="toto" select="document('modele.xhtml')"/>
    mais mon souci c'est que des éléments de ce document doivent être transformés.
    J'ai pensé aussi à un include ou import mais on ne peut pas les placer en tant qu'élément enfant d'une autre instruction xslt.

    Si vous avez des idées ...peut être que je ne prends pas le bon bout :-)

    Sylvain
    .NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

    Mon Blog : http://blog.developpez.com/index.php?blog=89
    Mes Articles : http://sjames.developpez.com/
    Rubrique XMLRAD: http://xmlrad.developpez.com

  2. #2
    ndp
    ndp est déconnecté
    Membre actif Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Points : 255
    Points
    255
    Par défaut
    Salut,

    Si je "matche" un stagiaire, j'aimerais pouvoir appeler un template qui va copier le modèle HTML en lui appliquant une transformation (remplacement des <xsl:value-of> par les données du stagiaire courant).
    En faisant comme ça , cela devrait marcher. Si ton document XML contient et les données sur le stagiaire et les données du modèle, ton template peut "reconstruire", pour chaque stagiaire, le modèle en y incluant les donnée du stagiaire.

    Après je n'ai peut être pas compris ta question, tu n'arrive pas à définir ton template ou tu cherches une autre solution?
    [/code]

  3. #3
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 52
    Points : 78
    Points
    78
    Par défaut Re: Template XHTML
    Citation Envoyé par Sylvain James

    L'objectif est que le modèle HTML soit strictement indépendant de la feuille XSL et non pas écrit dans une règle à l'intérieur de la feuille xsl.
    J'ai peur que cela fasse beaucoup de niveaux d'indépendance !

    A mon sens, le XML contient les informations ; le XSLT (et donc le XHTML final) contient l'organisation de ta présentation ; et le CSS la façon dont cette organisation est présentée. A la limite, s'il doit y avoir une variable dans ton XSLT, c'est la feuille de style CSS.

    Si tu veux différentes organisations de présentation, il est fort probable que tu aies à "matcher" différents profils dans le XML, ce qui te contraindra à recommencer ton XSLT.

    C'est mon opinion, maintenant il y a peut être des contraintes techniques qui justifient un niveau d'abstraction supplémentaire ?

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    Merci pour vos réponses, je vais essayer de mieux cibler le pb :

    En général, on inclut la présentation dans la feuille de style, autrement dit sont mélangés les règles xsl et les fragments html de présentation. C'est une contrainte pour moi car les personnes qui créent les modèles HTML ne connaissent rien à XSL et me fournissent un fichier XHTML avec des ancres <a name="nom_ancre"> insérées à l'endroit où je leur ai demandé.
    Si le modele doit changer on ne doit pas toucher au XSL, seulement le modele à travers un éditeur sachant exporter en XHTML.

    Imaginons que j'ai la grappe XML suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <STAGIAIRES>
    	<STAGIAIRE>
    		<NOM>JAMES</NOM>
    		<PRENOM>Sylvain</PRENOM>
    	</STAGIAIRE>
    	<STAGIAIRE>
    		<NOM>JOHNSON</NOM>
    		<PRENOM>Michael</PRENOM>
    	</STAGIAIRE>
    </STAGIAIRES>
    A partir de cette grappe je veux générer un document HTML qui va instancier autant de fois mon modèle HTML qu'il y a de stagiaires. (en réalité on instanciera uniquement le contenu de la balise <body>, pour ne pas répéter <html> et <head> à chaque stagiaire).

    Je pensais à une solution de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsl:template match='/'>
       <xsl:apply-templates/>
    </xsl:template>
     
    <xsl:variable name="modele" select="document('modele.xhtml')"/>
     
    <xsl:template match="STAGIAIRE">
       <xsl:value-of select="$modele"/>
    </xsl:template>
    Mais je ne vois pas comment remplacer les ancres qui sont dans le modele.
    Je me doute qu'il faut que j'architecture différemment mes éléments mais je tourne en rond :-)

    Merci pour vos réponses,

    Sylvain
    .NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

    Mon Blog : http://blog.developpez.com/index.php?blog=89
    Mes Articles : http://sjames.developpez.com/
    Rubrique XMLRAD: http://xmlrad.developpez.com

  5. #5
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    donc ton modèle est un template xhtml à l'intérieur duquel se trouve des ancres qui définissent les endroits où insérer les données du stagiaire (par exemple)? Ce template sert purement à la présentation donc...
    d'ou la contrainte si j'ai bien compris : une modification du template ne doit pas impacter le xsl.
    Effectivement le mieux aurait été de définir ton template en xsl et d'inclure ce template dans la feuille xsl principale. Mais comme ce n'est pas toi qui définit les templates mais des personnes ne connaissant pas le langage xsl, va falloir trouver autrechose... (blabla ok pour l'instant je ne t'ai rien appris de nouveau 8) )

    Bon le problème est que les personnes qui ont définit les templates on définit un langage xsl light (l'ancre est similaire au xsl:value-of) et le but est de transformer ce template en recopiant les balises xhtml sauf si tu rencontre une ancre, dans ce cas tu remplaces par la valeur de xsl:value-of.

    Vive la récursivité moi je dis, car je ne vois rien d'autre la :
    Attention c'est pas testé, donc ca risque de faire n'importe quoi, mais le principe est peut-être la

    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:template match="document('modele.xhtml')//*">
     <xsl:param name="stagiaire_pos">
    <xsl:if test="name() ='ancre'">
      <xsl:value-of select="//STAGIAIRE[position() =$stagiaire_pos]/nom">
    </xsl:if>
    <xsl:if test="name() !='ancre'">
     <xsl:copy>
       <xsl:apply-templates/>
     </xsl:copy>
    </xsl:if>
    </xsl:template>
     
    <xsl:template match="STAGIAIRE">
      <xsl:apply-templates select="document('modele.xhtml')">
         <xsl:with-param name="stagiaire_pos" select="position()"/>
    ....
    "Les gens normaux croient que si ca marche, c'est qu'il n'y a rien à reparer. Les ingénieurs croient que si ca marche, c'est que ca ne fait pas encore assez de choses."
    --Scott Adams

  6. #6
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 52
    Points : 78
    Points
    78
    Par défaut
    Je reste persuadé que la meilleure approche pour ton problème est le CSS. C'est la seule technique sur laquelle les designers ont des outils de travail ; le XSLT n'est pas du tout fait pour eux.

    Néanmoins, voici quelques pistes

    Sur Generic Template, tu verras que tu n'es pas le seul à te poser ce genre de questions.

    A Combinaison de feuilles de style, tu trouveras peut être de l'inspiration.

    Il me semble que XML Spy propose quelques facilités aux designers pour rédiger les feuilles de style (XSLT Designer).

    En XSLT standard il n'est pas possible de générer plusieurs fichiers de sortie en une seule transformation ; mais de nombreux outils proposent des extensions pour le faire, et il est probable que celui que tu utilises le fait, tant c'est une demande générale.

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    Merci pour ces réponses instructives.

    Gregory, voici ce que j'ai fait :

    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
    	<xsl:template match="document('template.xhtml')//*">
    	<xsl:param name="stagiaire"></xsl:param>
    	<xsl:if test="name() ='a'"> 
          <xsl:value-of select="$stagiaire/NOM"/>
          </xsl:if> 
         <xsl:if test="name() !='a'"> 
    		<xsl:copy>
    			<xsl:apply-templates/>
    		</xsl:copy>
    		</xsl:if>
    	</xsl:template>
     
    	<xsl:template match="STAGIAIRE">
    		<xsl:apply-templates select="document('template.xhtml')">
    			<xsl:with-param name="stagiaire" select="."/>
    		</xsl:apply-templates>
    	</xsl:template>
    Le problème c'est qu'il ne récupère pas les données de mon paramètre dans mon premier template ci dessus. Merci pour l'astuce de matcher sur un select=document... ! Je vais essayer de comprendre pourquoi ce paramètre n'est pas transmis.

    Sequentaire, je ne souhaite pas obtenir plusieurs présentations différentes mais plusieurs instances consécutives d'un template externalisé et "paramétré" (via des ancres ou xsl:value-of).

    Merci à vous
    Sylvain
    .NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

    Mon Blog : http://blog.developpez.com/index.php?blog=89
    Mes Articles : http://sjames.developpez.com/
    Rubrique XMLRAD: http://xmlrad.developpez.com

  8. #8
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    ah oui c'est normal car $stagiaire est interprété comme une string et non un nodeset (désolé pour le franglais), certainement pour une bonne raison, mais j'ai pas envi de chercher. bref $stagiaire/NOM est une string et pas un node, donc la valeur retournée est rien du tout! et pas moyen de convertir string vers nodeset bien sur, grrr!

    du coup faut passer la position je crois.
    a+
    "Les gens normaux croient que si ca marche, c'est qu'il n'y a rien à reparer. Les ingénieurs croient que si ca marche, c'est que ca ne fait pas encore assez de choses."
    --Scott Adams

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    ah intéressant...
    Mais j'avais essayé aussi avec Position(), même résultat...

    à suivre :-)

    Merci

    Sylvain
    .NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

    Mon Blog : http://blog.developpez.com/index.php?blog=89
    Mes Articles : http://sjames.developpez.com/
    Rubrique XMLRAD: http://xmlrad.developpez.com

  10. #10
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 52
    Points : 78
    Points
    78
    Par défaut
    Pour tes templates, essaie peut être la librairie EXSL, particulièrement leur paquage sur les expressions régulières. Ils ont un mode replace, ce qui peut aider pour les templates. Mais je l'ai jamais essayé.

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    Citation Envoyé par Grégory Picavet
    ah oui c'est normal car $stagiaire est interprété comme une string et non un nodeset (désolé pour le franglais), certainement pour une bonne raison, mais j'ai pas envi de chercher. bref $stagiaire/NOM est une string et pas un node, donc la valeur retournée est rien du tout! et pas moyen de convertir string vers nodeset bien sur, grrr!
    a+
    En fait non il doit normalement être interprété comme un nodeset, ce que j'ai confirmé par des tests avec un call-template.
    Si j'ajoute un template name="" et que j'appelle ce template (calltemplate) en passant en paramètre mon nodeset <Stagiaire>? je le récupère sans pb. Mais lorsque cette règle matche les noeud d'un document externe, alors le paramètre n'est plus transmis. Je ne comprends pas pourquoi.

    Bon le problème est que les personnes qui ont définit les templates on définit un langage xsl light (l'ancre est similaire au xsl:value-of) et le but est de transformer ce template en recopiant les balises xhtml sauf si tu rencontre une ancre, dans ce cas tu remplaces par la valeur de xsl:value-of.
    Je suis d'accord, mais si on souhaite une indépendance totale, c'est aussi au niveau des outils. Les éditeurs HTML permettent d'insérer des ancres mais rarement des xsl:value-of. A la limite on pourrait même effectuer une première transformation xsl qui remplacerait les <a name="..."> par des <xsl:value-of select="name"/> :-)

    Sylvain
    .NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

    Mon Blog : http://blog.developpez.com/index.php?blog=89
    Mes Articles : http://sjames.developpez.com/
    Rubrique XMLRAD: http://xmlrad.developpez.com

  12. #12
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    En fait non il doit normalement être interprété comme un nodeset, ce que j'ai confirmé par des tests avec un call-template.
    Si j'ajoute un template name="" et que j'appelle ce template (calltemplate) en passant en paramètre mon nodeset <Stagiaire>? je le récupère sans pb. Mais lorsque cette règle matche les noeud d'un document externe, alors le paramètre n'est plus transmis. Je ne comprends pas pourquoi.
    Intéressant Pourtant j'ai rencontré des cas ou ca ne marchait pas, Y-a-t-il une règle derrière tout ca?.

    -truc simpe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    1)
    <xsl:variable name="node" select="toto"/>
     
    <xsl:value-of select="toto"/> affiche le contenu de toto
    <xsl:value-of select="$node"/> affiche rien
    <xsl:apply-templates select="$node"/> affiche rien
    ...
    2)
    <xsl:variable name="node">toto</xsl:variable>
     
    <xsl:value-of select="$node"/> affiche "toto"
    <xsl:apply-templates select="$node"/> message d'erreur : $node n'est pas un nodeset
    dans le premier cas, node est bien de type nodeset
    dans le deuxième cas, node est de type chaine


    -si tu veux réaliser un tri selon un noeud dont le nom est passé en paramètre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <xsl:sort select="$noeud"/> marche pas
    <xsl:sort select="*[name() = $noeud]"/> ca marche!
    "Les gens normaux croient que si ca marche, c'est qu'il n'y a rien à reparer. Les ingénieurs croient que si ca marche, c'est que ca ne fait pas encore assez de choses."
    --Scott Adams

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    Intéressant Pourtant j'ai rencontré des cas ou ca ne marchait pas, Y-a-t-il une règle derrière tout ca?.
    Déjà il me semble que l'interprétation diffère entre les variables et les paramètres. A confirmer.


    1)
    <xsl:variable name="node" select="toto"/>

    <xsl:value-of select="toto"/> affiche le contenu de toto
    <xsl:value-of select="$node"/> affiche rien
    <xsl:apply-templates select="$node"/> affiche rien
    Normal si ton XML ne comporte pas de balise <toto>valeur</toto> avec une valeur. Si tu avais voulu affecter à la variable "node" la chaîne toto, alors il aurait fallu écrire :
    <xsl:variable name="node" select="'toto'"/>
    ou
    <xsl:variable name="node" select="string(toto)"/>


    2)
    <xsl:variable name="node">toto</xsl:variable>

    <xsl:value-of select="$node"/> affiche "toto"
    <xsl:apply-templates select="$node"/> message d'erreur : $node n'est pas un nodeset
    Effectivement c'est du text() :-)

    dans le premier cas, node est bien de type nodeset
    dans le deuxième cas, node est de type chaine
    Le problème se situe dans le contexte de passage de paramètre plus que dans le type de node passé en paramètre.

    Si je passe un nodeset <Stagiaire> en paramètre dans la règle suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:template match="document('template.xhtml')//*"> 
       <xsl:param name="stagiaire"></xsl:param>
    ..., je n'ai pas accès à mon paramètre, il est vide.

    Par contre si je passe le même nodeset en paramètre dans la règle suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:template match="STAGE"> 
       <xsl:param name="stagiaire"></xsl:param>
    ...là mon paramètre conserve les données à l'intérieur de la règle.

    Bilan, si mon template matche sur un document externe, alors mon paramètre n'est pas correctement transmis, sinon tout est ok.
    Bug du processeur XSL ?

    Sylvain
    .NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

    Mon Blog : http://blog.developpez.com/index.php?blog=89
    Mes Articles : http://sjames.developpez.com/
    Rubrique XMLRAD: http://xmlrad.developpez.com

  14. #14
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    Normal si ton XML ne comporte pas de balise <toto>valeur</toto> avec une valeur. Si tu avais voulu affecter à la variable "node" la chaîne toto, alors il aurait fallu écrire :
    <xsl:variable name="node" select="'toto'"/>
    ou
    <xsl:variable name="node" select="string(toto)"/>
    Oui je sais, j'ai lu la documentation xslt quand meme

    J'ai pas fait attention mais j'avais testé ce truc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <a>
    <b>
    <toto>
    du texte
    </toto>
    </b>
    </a>
     
    avec cette feuille 
    <xsl:template match="a">
    <xsl:variable name="node" select="toto"/>
    et oui, toto n'est pas connu dans le noeud a (j'aurais du me placer dans le noeud b) honte, honte! je vais me faire rétrograder en débutant si ca continu là. Du coup pas de soucis avec les variables de type nodeset.

    Par contre la conversion chaine->node n'est pas implicite. Il faut effectuer une requête XPATH du style *[name() ='nom_noeud']

    Le problème se situe dans le contexte de passage de paramètre plus que dans le type de node passé en paramètre.
    j'ai une petite idée: lors de l'execution de ton template le processeur doit changer de document xml à parcourir, du coup il suppose que le noeud passé en paramètre appartient au document template.xhtml alors qu'en réalité il appartient au document de départ. D'ou un conflit de nodeset et le paramètre stagiaire est vide.

    Je ne connais pas de solution . C'est probablement une limitation de XSLT : il ne conserve pas le document d'origine lors du passage de noeuds en paramètres

    Comme tu l'as déjà dit, tu peux contourner ce problème en transformant dans un premier temps ton template en feuille xslt avec une meta-feuille xslt puis faire un include.
    "Les gens normaux croient que si ca marche, c'est qu'il n'y a rien à reparer. Les ingénieurs croient que si ca marche, c'est que ca ne fait pas encore assez de choses."
    --Scott Adams

  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    Oui je sais, j'ai lu la documentation xslt quand meme
    ah tu me rassures ;-) attention tout de même, on ne lis jamais assez de fois les docs :-)

    j'ai une petite idée: lors de l'execution de ton template le processeur doit changer de document xml à parcourir, du coup il suppose que le noeud passé en paramètre appartient au document template.xhtml alors qu'en réalité il appartient au document de départ. D'ou un conflit de nodeset et le paramètre stagiaire est vide.
    Je ne connais pas de solution . C'est probablement une limitation de XSLT : il ne conserve pas le document d'origine lors du passage de noeuds en paramètres
    En fait ça marche pas même dans le même doc :-) problème de changement de noeud contexte apparemment ?

    Bon je reposte un nouveau topic sous un autre angle, merci de ton soutien.

    Sylvain
    .NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

    Mon Blog : http://blog.developpez.com/index.php?blog=89
    Mes Articles : http://sjames.developpez.com/
    Rubrique XMLRAD: http://xmlrad.developpez.com

Discussions similaires

  1. Template XHTML ou JSF2
    Par fzh2014 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 19/04/2014, 16h02
  2. modification d'un template XHTML/CSS
    Par street23 dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 03/02/2012, 21h30
  3. template.php pour variable xhtml
    Par StAfX dans le forum Langage
    Réponses: 1
    Dernier message: 05/02/2009, 10h38
  4. [XHTML] Creation Fichier Template
    Par floawed dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 06/12/2007, 19h45
  5. [XHTML] Recherche de templates
    Par php_de_travers dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 11/06/2006, 09h02

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