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] Import de feuille et utilisation de template


Sujet :

XSL/XSLT/XPATH XML

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [XSLT] Import de feuille et utilisation de template
    Bonjour

    Voilà, je découvre XSLT et, même si j'ai trouvé plein d'infos très interressante à droite et à gauche, je bute sur un problème que je n'arrive pas à résoudre... Donc voilà...

    Je veux créer différentes feuilles XSLT pour mettre en page des flux XML différents et ne représentant pas la même chose. En clair, ils n'ont rien à voir. Seulement, certaines fonctionnalités (par exemple le formatage d'une date en français) sont utilisées dans toutes ces XSLT et j'aimerai donc les externalisées. Pour ça, j'ai créé une fonction (ou dois-je dire template avec paramètre ?) qui formate une date passée en paramètre, que j'ai mis dans un fichier nommé common.xsl dans le but de l'inclure (ou importer ?) dans toutes mes XSLT. Seulement voilà, il ne trouve pas mon template "externe" au moment de l'utilisation...

    Voici mon fichier "common.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
    17
    18
    19
    20
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    	<xsl:output method="html" encoding="ISO-8859-1" />
     
    	<xsl:template name="FormateDate">
    		<xsl:param name="date" />
    		<xsl:variable name="year" select="substring($date, 1, 4)" />
    		<xsl:variable name="month" select="substring($date, 6, 2)" />
    		<xsl:variable name="day" select="substring($date, 9, 2)" />
    		<xsl:variable name="hour" select="substring($date, 12, 2)" />
    		<xsl:variable name="min" select="substring($date, 15, 2)" />
    		<xsl:variable name="sec" select="substring($date, 18, 2)" />
     
    		<xsl:value-of select="concat($day, '/', $month, '/', $year)" />
    		<xsl:text> </xsl:text>
    		<xsl:value-of select="concat($hour, ':', $min, ':', $sec)" />
    	</xsl:template>
     
    </xsl:stylesheet>
    Et voici un exemple de XSLT l'incluant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    	<xsl:import href="common.xsl"/>  
    	<xsl:output method="html" encoding="ISO-8859-1" />
    	<xsl:template match="/date">
    		<p>
    		<xsl:call-template name="FormateDate">
    			<xsl:with-param name="date" select="@value" />
    		</xsl:call-template>
    		</p>
    	</xsl:template>
     
    </xsl:stylesheet>
    Pour finir, voici la source XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?xml version="1.0" encoding="ISO-8859-1"?>
     
    <date value="2008-01-11 11:44:00.704" />
    J'ai tenté de faire le plus simple possible pour que ce soit clair !

    Par ailleurs, si ça peut être utile, je fais tout ça avec du ASP et voici ma page appelante :
    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
    <%@ Language=VBScript %>
    <html>
    	<head>
    		<title>Petits tests</title>
    	</head>
    	<body>
    <%
    set oXsl = Server.CreateObject("MSXML2.DOMDocument.6.0")
    oXsl.load(Server.MapPath("test.xsl"))
    set oXml = Server.CreateObject("MSXML2.DOMDocument.6.0")
    oXml.load(Server.MapPath("test.xml"))
    Response.Write(oXml.transformNode(oXsl))
    set oXsl = nothing
    set oXml = nothing
    %>
    	</body>
    </html>
    Je croyais avoir tout bien fait et je me tape l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    msxml6.dll error '80004005'
     
    Named template 'FormateDate' does not exist in the stylesheet.
     
    /pftl/petit_test.asp, line 12
    Merci déjà à ceux qui ont tout lu Et merci d'avance à ceux qui pourraient m'aider / me conseiller
    Dernière modification par Invité ; 15/01/2008 à 11h53.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/01/2013, 10h11
  2. [XSLT] import de feuille de style
    Par melsanka dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 30/11/2009, 15h44
  3. [XSLT] import feuilles xsl
    Par pixigol dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 07/12/2008, 13h06
  4. [XSLT] Utilisation variable template
    Par mihaestii dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 23/11/2005, 15h44
  5. Utilisation de template dans un role de fonctions/procedures
    Par Punky65250 dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 01/09/2004, 10h05

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