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] Importer un fichier xml (i18n) dans un fichier xsl [Débutant(e)]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Par défaut [XSLT] Importer un fichier xml (i18n) dans un fichier xsl
    bonjour,

    voici mon soucis:
    J'applique une transformation xslt à un fichier xml.
    Dans le fichier xsl, j'aimerais importer (appeller) un autre xml qui contient la traduction. (genre <error_text>veuillez mettre votre login</error_text>)

    Le problème c'est que je n'arrive pas à importer ce fichier dans le fichier xsl
    Comment faut il faire?

    Aussi y'aurait il une syntaxe particulière pour utiliser la valeur du noeud error_text du xml importé?
    ou un <xsl:value-of select="error_text" /> suffit?


    j'ai essayé l'exemple de haypo:
    http://www.developpez.net/forums/sho...59&postcount=5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:template xmlns:xi="http://www.w3.org/2001/XInclude" match="xi:include">  <!-- Get a reference to the external file's root node -->  <xsl:variable name="external_doc" select="document(@href)" />   <!-- Process the external file's document element -->  <xsl:apply-templates select="$external_doc/*" /> </xsl:template>
    en mettant à la place de select="document(@href)";
    select="document(http://monsite/monxml.xml)" ou bien select="http://monsite/monxml.xml"
    mais ça ne marche pas...vous pouvez m'aidez?
    Merci.

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Par défaut
    j'ai trouvé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="document('http://monsite/monxml.xml')//error_text"/>
    mais n'est-ce pas trop lourd d'appeller à chaque fois http://monsite/monxml.xml à chaque fois que j'ai besoin d'une variable?

    Y'aurait-il un moyen de l'appeller qu'une seule fois tout en étant libre d'utiliser les noeuds de ce fichier xml importé ou bien celui à qui j'applique la transformation?
    merci.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Par défaut
    savez comment je pourrais recupérer l'url de la feuille de style xsl $url_current?
    en gros:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="document('$url_current../../monxml.xml')//error_text"/>
    merci.

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Par défaut
    personne n'a d'idée sur comment importer du xml dans du xsl en une fois et non pas sur chaque noeud?

  5. #5
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    et pourquoi tu n'utilises pas les includes pour résoudres ton problèmes:
    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="ISO-8859-1"?>
    <!DOCTYPE students[
    <!ENTITY source1 SYSTEM "student1.xml">
    <!ENTITY source2 SYSTEM "student2.xml">
    <!ENTITY source3 SYSTEM "student3.xml">
    ]>
     
    <students>
    &source1;
    &source3;
    &source2;
    </students>

  6. #6
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    tu peux toujours faire une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="messages" select="document('http://site/xml.xml')/"/>


    ensuite, tu as juste à utiliser $messages/... pour avoir ton message
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/12/2008, 13h38
  2. Réponses: 1
    Dernier message: 22/04/2008, 11h24
  3. Stoquer dans un fichier XML ou dans une base de données ?
    Par ludovic tambour dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 15/11/2007, 11h02
  4. [DOM XML] Ecrire dans un fichier XML comme dans un TXT
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 23/09/2007, 22h55
  5. Réponses: 3
    Dernier message: 06/08/2007, 03h44

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