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 :

Problème de namespace dans traduction XMLtoXML [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

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

    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Par défaut Problème de namespace dans traduction XMLtoXML
    Bonjour,

    Me voilà confronter à un problème de namespace.

    J'ai un XML en entrée (Entree.xml), un XSL de traduction XMLtoXML et donc un XML de sortie(Sortie.Xml).

    Lorsque j'applique ma XSL j'ai bel et bien un XML de sortie.
    Le problème étant qu'on m'a demandé de rajouter des namespaces dans le XML d'entrée.

    Ce qui implique des changements dans la XSL.
    Cependant si je veux qu'il match bien partout, je dois rajouter des "defaut:" dans tous mes Xpath



    Entree.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Element xmlns="X" xmlns:xsi="Y">
    ...
    </Element>
    Xsl XMLtoXML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:defaut="X" 
    xmlns:xsi="Y" 
    exclude-result-prefixes="defaut xsi">
    	<xsl:output method="xml" indent="yes" encoding="ISO8859-1"/>
    	<xsl:template match="/">
    		<xsl:apply-templates select="defaut:Element"/>
    	</xsl:template>
    Je me rends compte que je dois ajouter des defaut partout, et j'ai beaucoup de problème dans mon XML de sorti avec cette solution, beaucoup d'infos ne match plus

    J'ai un peu du mal avec les namespaces, et je ne vois pas comment rajouter xmlns:defaut="X" et xmlns: xsi="Y" dans ma XSL sans avoir à modifier tout le code :-/

    Sachant qu'en sortie, je ne les désire pas ces fameux namespace, je voulais savoir s'il existait une solution, comme ne pas prendre en compte les namespace lors de ma traduction, ou bien quelque-chose de moins laborieux

    Auriez vous une idée ?


    edit : Au vu de toutes les recherches que j'ai pu faire et de la FAQ sur ce site, il n'y a pas d'autre solutions ?? Arggg
    Merci à tous !

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Alors, plusieurs choses :

    - En XPath, le langage de sélection utilisé par XSL, les éléments dans un namespace doivent être préfixés. Pas d'exception, pas de contournement, c'est comme ça, point. Donc s'il faut ajouter un namespace dans le XML d'entrée, tu n'as juste pas le choix, il faut remplacer tous tes XPaths pour ajouter les préfixes.
    (Note au passage que la mode, en XML, est de toujours mettre les éléments dans un namespace. Je n'aime pas trop cette mode, mais c'est ainsi. Du coup ça veut dire que les éléments auraient dû avoir un namespace depuis le début, et que tu aurais dû les préfixer depuis le début. C'est en tout cas ce que la mode attendait de toi. Il n'est pas prévu que ce soit simple de passer de "sans namespace" à "avec namespace.")

    - Au lieu de default:, fais d:
    C'est pareil et plus court, donc plus lisible

    - dans la stylesheet est inutile si tu ne veux pas qu'il apparaisse dans le fichier de sortie. Vire.
    (Au passage, il est inutile aussi dans le fichier d'entrée s'il n'y a pas de ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xsi:noNamespaceSchemaLocation
    . Mais bon.)

    - En effet, si tu mets dans ta stylesheet, il va aussi être mis dans le fichier résultat... Sauf si tu utilises exclude-result-prefixes="default", comme tu le fais, et qu'aucune balise du fichier résultat n'est dans ce namespace.
    Autrement dit, il semble que tu aies déjà fait ce qu'il faut pour. Fais voir ton XSLT.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/12/2008, 12h32
  2. Problème de date dans MONTHS_BETWEEN
    Par ghostlord79 dans le forum Oracle
    Réponses: 10
    Dernier message: 07/04/2004, 11h21
  3. problème de police dans un richedit
    Par chtiot dans le forum Composants VCL
    Réponses: 4
    Dernier message: 28/10/2003, 09h48
  4. Réponses: 19
    Dernier message: 27/08/2003, 15h32
  5. problème de guillemets dans une formule shell
    Par dim_italia dans le forum VBA Access
    Réponses: 7
    Dernier message: 18/08/2003, 12h46

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