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] Tranferer une valeur a un script ASP


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut [XSLT] Tranferer une valeur a un script ASP
    Bjour, encore une problématique tordue : je souhaite dezipper a la volée un ensemble de fichiers.

    J'ai :
    - un XML qui liste les fichiers dont j'ai besoin. Ces fichiers sont chacun dans une archive ZIP.
    - un ASP qui génère le XSL qui travaille sur les fichiers XML contenus dans les ZIP.

    Mon problème : je peux dezipper une archive en ASP mais c'est le XSL qui connait le nom du fichier a dezipper !

    les fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    racine.xml
    genere_xsl.asp
    zip/file1.zip
    zip/file2.zip
    zip/file3.zip
    racine.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <file name="file3" />
    <file name="file2" />
    <file name="file3" />
    genere_xsl.asp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
       <xsl:template match='/'>
          <xsl:for-each select="file"/>
             <%
             <!-- Ici, je veux verifier, en ASP, si le fichier est deja dezippé
             ou pas. Le code est simple mais comment récupérer la valeur de
             "@name" en ASP ? -->
             %>
          </xsl:for-each>
       </xsl:template>
    </xsl:stylesheet>

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut
    Personne ?

    En fait, indépendamment du projet exposé ici, ma problématique est de pouvoir transférer une information depuis le code XSL afin de m'en resservir dans un autre script.

    Y a t il un moyen quelconque de faire cela ? Je sais pas moi, en écrivant dans un fichier texte par exemple ou un truc du genre.

  3. #3
    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
    Par défaut
    Il faut voir une feuiile XSLT comme une gigantesque fonction.
    Tu lui passe une XML, un certains nombre de paramètre et dans son return elle te fournit sa réponse.S'il y a des "données" on les notes dans un XML à part et on fait la liaison avec la fonction document, cela permet aussi d'accéder à ces données via autre chose que le XSLT
    Vouloir aller chercher des infos dans le XSLT, ça note généralement un problème de conception

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut
    Vouloir aller chercher des infos dans le XSLT, ça note généralement un problème de conception
    Je suis on ne peut plus d'accord mais, malheureusement, on ne me demande pas mon avis sur les sources XML

    Je ne suis pas sur d'avoir compris ce que tu disait. Existe-t-il un moyen de faire un traitement ASP sur une valeur seulement connue lors de l'exécution d'une boucle en XSL ?

    Je suis en train de travailler sur une piste : je fait faire la transformation via un script ASP (méthode transformNode()) et au lieu de "publier" le résultat dans la page web, je le parse pour traiter mes fichiers.

  5. #5
    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
    Par défaut
    Citation Envoyé par SkyBack Voir le message
    Je suis en train de travailler sur une piste : je fait faire la transformation via un script ASP (méthode transformNode()) et au lieu de "publier" le résultat dans la page web, je le parse pour traiter mes fichiers.
    Oui, c'est plutot ce type d'approche qu'il faut avoir, mais pourquoi dans ce cas ne pas faire un script xslt dédié qui ne te renverrait que l'info souhaité ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut
    Voila, c'est la solution ("I had to think outside the box")
    Donc : un script ASP qui fait une premiere transformation avec un XSL qui liste mes fichiers, suivi d'un petit "split" du resultat et je peux travailler dans une boucle avant de re-transformer avec le vrai XSL qui s'appuiera sur les données précalculées et affichera ma page.

    get_file_names.xsl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?xml version='1.0' encoding='UTF-8'?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:template match='FILE'>;<xsl:value-of select="@NAME" /></xsl:template>
    </xsl:stylesheet>
    transform.asp
    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
     
    <%
    	xmlurl = "racine.xml"
    	XMLDoc.load(server.MapPath(xmlurl))
    	xslurl = "http://nom_serveur/get_file_names.xsl"
    	oXMLHttp.open "GET", xslurl, false
    	oXMLHttp.send
    	XSLDoc.loadXML(oXMLHttp.responseText)
    	xmlresult = XMLDoc.transformNode(XSLDoc)
    	Dim tab
    	tab = split ( xmlresult, ";" )
    	' Il faut partir de 1 pour ne pas prendre le premier element (balise <?xml ... ?>)'
    	For i = 1 to UBound(tab)
    		'traitement ASP des fichiers
    	Next
     
    	' Deuxieme transfo, avec le vrai XSL et response.write de xmlresult
    %>

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

Discussions similaires

  1. [XSLT]Transformer une valeur d'attribut en élément
    Par heffer69 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 01/02/2008, 11h48
  2. [XSLT] modifier une valeur d'attribut
    Par aadariom dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/10/2007, 12h24
  3. [XSLT] "memoriser" une valeur (variable)
    Par yupa dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 18/05/2007, 12h02
  4. [XSLT] mettre une valeur d'un XML dans une variable ?
    Par xiii34 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 13/04/2007, 18h14
  5. [XSLT]Recuperer une valeur parmis une liste. (tri)
    Par Asaturne dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/06/2006, 17h27

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