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 2.0] Extra xmlns dans l'output


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut [XSLT 2.0] Extra xmlns dans l'output
    Bonjour,

    Voilà dans le xsl, j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:element name="{'From'}">
    Dans l'output, j'obtiens:

    Y'a t-il possibilité d'enlever xmlns=""?

  2. #2
    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 : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:element name="From">
    Pourquoi tu n'as ceci déja

    Si cela ne vient pas de cette bizarrerie d'ecriture il faudrait un morceau un peu plus gros du xslt et xml pour voir d'ou cela peut venir

  3. #3
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    Merci pour ta réponse. J'ai modifié le xsl mais cela n'a rien changé.

    Ci dessous le xsl complet:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
        version="2.0">
        <xsl:output method="xml" />
        <xsl:variable name="index" select="1"></xsl:variable>
        <xsl:template match="node()">
             <xsl:choose>
                 <xsl:when test="(name(..) = 'Header')">
                     <xsl:variable name="value-tokens" select="tokenize(current(), ';')"></xsl:variable>
                     <xsl:variable name="tags" select="'OrganizationId;DestinationType;Destination'"></xsl:variable>
                     <xsl:variable name="tag-tokens" select="tokenize($tags, ';')"></xsl:variable>
                     <xsl:choose>              
                         <xsl:when test="(name(.) =  'To')" >
                             <xsl:element name="From">
                                 <xsl:call-template name="counter">
                                     <xsl:with-param name="index" select="1"></xsl:with-param>
                                     <xsl:with-param name="tags" select="$tag-tokens"></xsl:with-param>
                                     <xsl:with-param name="values" select="$value-tokens"></xsl:with-param>
                                 </xsl:call-template>
                             </xsl:element>
                         </xsl:when>
                         <xsl:when test="(name(.) = 'From')">
                             <xsl:element name="To">
                                 <xsl:call-template name="counter">
                                     <xsl:with-param name="index" select="1"></xsl:with-param>
                                     <xsl:with-param name="tags" select="$tag-tokens"></xsl:with-param>
                                     <xsl:with-param name="values" select="$value-tokens"></xsl:with-param>
                                 </xsl:call-template>
                             </xsl:element>
                             </xsl:when>
                         <xsl:otherwise>
                             <xsl:copy>
                                 <xsl:apply-templates select="node()" />
                             </xsl:copy>
                         </xsl:otherwise>
                     </xsl:choose>
                 </xsl:when>
                <xsl:when test="@type='split'">
                    <xsl:if test="not(self::*/@type = preceding::*/@type)">
                    <xsl:variable name="level" select="tokenize(@level, ';')"></xsl:variable>
                    <xsl:element name="{$level[1]}">
                        <xsl:element name="{$level[2]}">
                    <xsl:call-template name="recursive">
                        <xsl:with-param name="counter" select="$index"></xsl:with-param>
                    </xsl:call-template>
                        </xsl:element>
                    </xsl:element>
                    </xsl:if>
                    </xsl:when>
                <xsl:otherwise>
            <xsl:copy>
                <xsl:apply-templates select="node()" />
            </xsl:copy>
                </xsl:otherwise>
                </xsl:choose>
        </xsl:template>
     
        <xsl:template name="counter" match= "Header">
            <xsl:param name="index"></xsl:param>
            <xsl:param name="tags"></xsl:param>
            <xsl:param name="values"></xsl:param>
            <xsl:if test="$index &lt; count($tags)">
            <xsl:element name="{$tags[$index]}">
                <xsl:value-of select="$values[$index]"></xsl:value-of>
            </xsl:element>
            <xsl:call-template name="counter">
                <xsl:with-param name="index" select="$index+1"> </xsl:with-param>
            </xsl:call-template>
            </xsl:if>
            </xsl:template>
        <xsl:template name="recursive" match= "SpecificSection">
            <xsl:param name="counter" />
            <xsl:if test="@type='split'">
            <xsl:variable name="separator" select="@separator"></xsl:variable>
                    <xsl:for-each-group select="//*" group-by="@level">
                        <xsl:variable name="level" select="tokenize(@level, ';')"></xsl:variable>
                        <xsl:element name="{$level[2]}">
                        <xsl:for-each select="current-group()">
                            <xsl:variable name="tokenizedSample" select="tokenize(current(), $separator)"></xsl:variable>
                            <xsl:element name="{name(.)}" >
                                <xsl:value-of select="$tokenizedSample[$counter]" ></xsl:value-of>
                            </xsl:element>
                        </xsl:for-each>
                        </xsl:element>
                        <xsl:if test="$counter &lt; 4">
                            <xsl:call-template name="recursive"><xsl:with-param name="counter" select="$counter+1"></xsl:with-param></xsl:call-template>
                        </xsl:if>
     
                    </xsl:for-each-group>    
     
           </xsl:if>
        </xsl:template>
            </xsl:stylesheet>
    Le xml utilisé en input:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    <?xml version="1.0" encoding="UTF-8"?>
    <NeBiEnvelope xmlns="http://www.nebi.biz/schemas/bd/nebienvelope" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" BusinessDocumentVersion="7.0" xsi:schemaLocation="http://www.nebi.biz/schemas/bd/nebienvelope NeBiEnvelope_L_0_3.xsd">
        <Header>
            <From>teliasonera.com;JMS;Teliasonera</From>
            <To>lucent.com;JMS;Lucent</To>
            <Dialog>BC:Order_1.0</Dialog>
            <DialogId>1233554</DialogId>
            <MessageType>BD:ExecutionStatus_L_1.0</MessageType>
            <MessageId>1162909520.544.INTF_TEST@WFM014</MessageId>
            <Reference Role="buyer" Type="BusinessAgreement">1233554</Reference>
            <SequenceId>23565</SequenceId>
        </Header>
        <Body>
            <ExecutionStatus xmlns="http://www.nebi.biz/schemas/bd/executionstatus" BusinessDocumentVersion="7.0" Status="yes" StatusReportReason="status" xsi:schemaLocation="http://www.nebi.biz/schemas/bd/executionstatus ExecutionStatus_L_0_93.xsd">
                <Reference Role="buyer">1233554</Reference>
                <ProductLine Number="1">
                    <ProgressLevel>Error:Zone Already Exists</ProgressLevel>
                    <ProductUseCaseDetails Id="wiNotify">
                        <workItem xmlns="http://lucent.com/GRIPP/workitem" xsi:schemaLocation="http://lucent.com/GRIPP/workitem workItem.xsd">
                            <wiNotify>
                                <wiNotifyHeader>
                                    <workItemId>1160660948248@TELIANBI</workItemId>
                                    <workItemType>NBI</workItemType>
                                    <adminState>OnTime</adminState>
                                    <createTime>07-Nov-06 15:25:11</createTime>
                                    <startTime>07-Nov-06 15:25:11</startTime>
                                    <suspendInd>0</suspendInd>
                                    <suspendReasonCode/>
                                </wiNotifyHeader>
                                <wiNotifyBody>
                                    <DNS02NotifyBody>
                                        <GlobalSection xmlns="http://lucent.com/GRIPP/dns02">
                                            <Status>Error:Zone Already Exists</Status>
                                        </GlobalSection>
                                        <SpecificSection xmlns="http://lucent.com/GRIPP/dns02">
                                            <MNS1/>
                                            <MNS2/>
                                            <MNS3/>
                                            <MNS4/>
                                            <EmailNsRipeNet/>
                                            <ParentZone/>
                                            <ParentReverseZone/>
                                            <ZoneName>me.decoker.org</ZoneName>
                                            <DelegationResult/>
                                            <DelegationReason/>
                                            <TSIGKeyName/>
                                            <SecretKey/>
                                            <RemoteSlaveFQDN level="RemoteSlaves;RemoteSlave" separator="&#xA;" type="split">test1
                                                test2
                                                test3</RemoteSlaveFQDN>
                                            <RemoteSlaveIP level="RemoteSlaves;RemoteSlave" separator="&#xA;" type="split">123.123.123.123
                                            123.124.125
                                            126.127.128.129</RemoteSlaveIP>
                                        </SpecificSection>
                                    </DNS02NotifyBody>
                                </wiNotifyBody>
                            </wiNotify>
                        </workItem>
                    </ProductUseCaseDetails>
                </ProductLine>
            </ExecutionStatus>
        </Body>
    </NeBiEnvelope>
    Je ne suis absolument pas à l'aise avec xsl. J'ai repris un xsl fait par un collègue. Il y a plusieurs choses qui ne marchent pas J'essaie de le résoudre une à une .... avec votre aide

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    je ne vois pas trop la raison qui fait apparaitre le xmlns!

    par contre je trouve ce template recursive un peu bizarre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <xsl:template name="counter" match= "Header">
            <xsl:param name="index"></xsl:param>
            <xsl:param name="tags"></xsl:param>
            <xsl:param name="values"></xsl:param>
            <xsl:if test="$index &lt; count($tags)">
            <xsl:element name="{$tags[$index]}">
                <xsl:value-of select="$values[$index]"></xsl:value-of>
            </xsl:element>
            <xsl:call-template name="counter">
                <xsl:with-param name="index" select="$index+1"> </xsl:with-param>
            </xsl:call-template>
            </xsl:if>
            </xsl:template>
    pourquoi dans l'appel recursive vous ne passez pas le reste des parametres (tags,values)??
    Ce n’est pas en cassant le thermomètre que vous ferez baisser la température

  5. #5
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    Merci!!!
    Cela fait déjà un problème de fixer.
    Aucune idée pour le xmlns?

  6. #6
    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 : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    je soupçonne que c'est dut à tes nombreux namespaces et au fait qu'on ne les retrouves pas dans le xslt .Quel est le parseur que tu utilises ?

  7. #7
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    J'utilise Saxon 8B comme parseur xslt.

  8. #8
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    ça y est ... j'ai trouvé. Il faut ajouter namespace="{namespace-uri()}" dans chaque <xsl:element> tag.

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

Discussions similaires

  1. [XSLT] Problème de xmlns dans un template
    Par Crazyfaboo dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 16/08/2007, 12h47
  2. [Xslt] comment supprimer le xmlns:meta="urn:microsoft-m
    Par Landolsi dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/02/2006, 15h06
  3. [XSLT] Réutiliser un contexte mémorisé dans une variable
    Par camboui dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 02/01/2006, 12h49
  4. [xslt] import d'1 fichier dans un autre
    Par teophil dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/11/2005, 08h28
  5. [XSLT][.NET] Transformer du XML dans un string
    Par Floyd dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/10/2005, 15h41

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