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 :

2 namespace dont un avec prefixe sur un élément.


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut 2 namespace dont un avec prefixe sur un élément.
    Bonjour

    j'ai un petit pb avec une xslt 1.0.
    J'ai une transformation qui produite un élément comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns="urn:fr.aphp.ati.eai.hermes.ng446.copilote.idoc"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
        xmlns:ns1="urn:fr.aphp.ati.eai.hermes.ng446.pivot"
        exclude-result-prefixes="ns1">
        <xsl:output indent="yes" encoding="ISO-8859-1" method="xml" version="1.0" />
     
        <xsl:template match="/ns1:reservation">
            <p:COPILOTE xmlns:p="urn:fr.aphp.ati.eai.hermes.ng446.copilote"
                xmlns="urn:fr.aphp.ati.eai.hermes.ng446.copilote.idoc">
    ...
    Avec la plus part des outil cela fonctionne mais pas avec ma plateforme de production qui fait une erreur
    "L'attribut *** n'est pas admis sur l'élément ***"
    J'avais ce message d'erreur sur une autre transformation dans laquelle j'avaisL'attribut "BEGIN" n'est pas admis sur l'élément IDOC !; Line#: 14; Column#: 22
    Je l'ai résolu en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:element name="IDOC">
                <xsl:attribute name="BEGIN">1</xsl:attribute>
    J'ai donc cherché à faire pareil avec p:COPILOTE mais là il ne s'agit pas de simple attributs mais de namespaces.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns="urn:fr.aphp.ati.eai.hermes.ng446.copilote.idoc"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
        xmlns:ns1="urn:fr.aphp.ati.eai.hermes.ng446.pivot"
        xmlns:p="urn:fr.aphp.ati.eai.hermes.ng446.copilote"
        exclude-result-prefixes="ns1">
        <xsl:output indent="yes" encoding="ISO-8859-1" method="xml" version="1.0" />
     
        <xsl:template match="/ns1:reservation">
            <xsl:element name="p:COPILOTE" namespace="urn:fr.aphp.ati.eai.hermes.ng446.copilote">
                <!--xsl:attribute name="xmlns:p">urn:fr.aphp.ati.eai.hermes.ng446.copilote</xsl:attribute-->
                <!--xsl:attribute name="xmlns>urn:fr.aphp.ati.eai.hermes.ng446.copilote.idoc</xsl:attribute-->
    mon problème est que je n'arrive pas à ajouter le deuxième namespace.
    Je précise que je ne recopie pas une structure pour lui ajouter une namespace je crée un simple élément avec deux namespaces et une valeur.
    J'ai trouvé beaucoup d'exemple sur le net pour copier ou remplacer un préfixe par un autre. cela n'est pas du tout mon problème.

    je cherche simplement comment traduire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            <p:COPILOTE xmlns:p="urn:fr.aphp.ati.eai.hermes.ng446.copilote"
                xmlns="urn:fr.aphp.ati.eai.hermes.ng446.copilote.idoc">
    en utilisant la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:element name="p:COPILOTE" namespace="urn:fr.aphp.ati.eai.hermes.ng446.copilote">
    Merci de votre aide.
    A+JYT

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    en principe XSLT 1.0 n'est pas prévu pour ça. Mais il existe une manip' qui devrait y arriver (ça marche avec mes moteurs préférés):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:variable name="namespace-holder" xmlns="http://ton-namespace-prefere.org"/> 
    <xsl:variable name="namespace" select="document('')//xsl:variable[@name = 'namespace-holder']/namespace::*[name() = '']" />
    et là où il y a besoin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:element name="ton:element" namespace="http://un-autre-namespace.org">
      <xsl:copy-of select="$namespace"/>
    </xsl:element>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Merci

    ça fonctionne
    mais maintenant ce sont les tests unitaire qui plante.
    ce qui est un moindre mal.

    A+JYT

Discussions similaires

  1. Extraction de données avec XSL sur des XML avec namespace
    Par snake264 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/02/2012, 10h16
  2. Réponses: 1
    Dernier message: 22/12/2008, 10h15
  3. [FB1.5]Vue avec jointure sur tables ?
    Par Sitting Bull dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/2004, 17h07
  4. Recherche d'un mot avec LIKE sur plusieurs champs
    Par reynhart dans le forum Langage SQL
    Réponses: 16
    Dernier message: 26/11/2004, 17h41
  5. Problème avec RDTSC sur K6-III
    Par le mage tophinus dans le forum x86 32-bits / 64-bits
    Réponses: 17
    Dernier message: 30/09/2003, 09h43

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