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 :

Suppression balise avec attribut = x, et renommage d'un autre attribut [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 averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 39
    Par défaut Suppression balise avec attribut = x, et renommage d'un autre attribut
    Bonjour,

    Cela fait deux jours que j'essaye de convertir un wsdl en un autre à l'aide d'une feuille de style xsl et que je n'y arrive pas. Ce n'est pas faute de lire des tutoriels et des cours partout sur le net mais je n'arrive pas à les adapter pour transformer un wsdl .

    Voilà le bout de code simplifié que je veux traduire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <xsd:element name="PlopBis">
    				<xsd:complexType>
    					<xsd:sequence>
    						<xsd:element name="Livre" type="xsd:string"
    							maxOccurs="unbounded" />
     
    						<xsd:element name="CodeLivre" type="xsd:string" />
     
    					</xsd:sequence>
    				</xsd:complexType>
    			</xsd:element>
    Je veux supprimer la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsd:element name="CodeLivre" type="xsd:string" />
    et modifier l'attribut "PlopBis" en "Plop" dans la première ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsd:element name="PlopBis">
    Merci de votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2009
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2009
    Messages : 229
    Par défaut
    ben tu le changer directement (code xsd). C'est plutôt il faut adapter ton code (wsdl) pour utiliser les nouveaux types xsd !!!

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 39
    Par défaut
    B justement je ne peux pas le changer directement.
    Sur le principe, j'ai un ESB avec en entrée, le wsdl que je vous ai montré, et en sortie, le wsdl corrigé car le nouveau paramètre ne m'intéresse que dans l'ESB et pas dans le Web Service final qui ne doit pas être corrigé.
    je dois donc absolument réussir à transformer ce que j'ai dit dans le premier post , ce que le xsl me permet de faire (en théorie).

  4. #4
    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
    Il aurait fallu que tu nous montres aussi ce que tu as déjà essayé. Mais bon.

    Pour commencer, il te faut un template qui copie absolument tout, tel que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template match="@*|node()">
      <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
    </xsl:template>
    Puis d'autres templates pour traiter différemment les cas particuliers :

    - Changer PlopBis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:template match="xsd:element[@name = 'PlopBis']">
      <xsd:element name="Plop">
        <!-- traiter le contenu, pas les attributs -->
        <xsl:apply-templates/>
      </xsd:element>
    </xsl:template>
    - Enlever la ligne CodeLivre

    Je te laisse chercher.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 39
    Par défaut
    Merci de ton aide en tout cas. Voilà le xsl que j'ai pour le moment, je vais essayer de le corriger par rapport à ce que tu m'as dit.
    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0"
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" encoding="UTF-8" indent="no" />
     
    	<xsl:template match="/">
    		<xsl:apply-templates />
    	</xsl:template>
     
    	<xsl:template match="node() | @*">
    		<xsl:if test="@name != 'CodeLivre'">
    			<xsl:copy>
    				<xsl:apply-templates select="node() | @*" />
    			</xsl:copy>
    		</xsl:if>
    	</xsl:template>
     
    	<xsl:template match="element">
    		<xsl:attribute name="PlopBis">
    <xsl:value-of
    			select="translate(.,'PlopBis','Plop')" />
    </xsl:attribute>
    	</xsl:template>
     
    </xsl:stylesheet>

    et voici mon nouveau XSL sur la base de tes recommandations.

    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
    <xsl:stylesheet version="1.0"
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" encoding="UTF-8" indent="no" />
     
    	<xsl:template match="node() | @*">
    		<xsl:copy>
    			<xsl:apply-templates select="node() | @*" />
    		</xsl:copy>
    	</xsl:template>
     
    	<xsl:template match="xsd:element[@name = 'PlopBis']">
    		<xsd:element name="Plop">
    			<xsl:apply-templates />
    		</xsd:element>
    	</xsl:template>
     
    	<xsl:template match="xsd:element[@name = 'CodeLivre']"/>
     
    </xsl:stylesheet>
    Si je ne me trompe pas pour supprimer une ligne il suffit juste de la sélectionner et de ne faire aucun traitements dessus.
    Je passe le post en résolu, merci de ton aide

  6. #6
    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
    Citation Envoyé par bugger31 Voir le message
    et voici mon nouveau XSL sur la base de tes recommandations.
    N'oublie pas de déclarer xmlns:xsd.

    Citation Envoyé par bugger31 Voir le message
    Si je ne me trompe pas pour supprimer une ligne il suffit juste de la sélectionner et de ne faire aucun traitements dessus.
    Absolument. Le template est correct.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 39
    Par défaut
    N'oublie pas de déclarer xmlnssd.
    Tu fais bien de me le dire, merci

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

Discussions similaires

  1. Selectionner une balise avec un attribut ayant deux valeur
    Par lemok dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/05/2007, 17h25
  2. [JDOM] Ajout d'une balise avec un attribut différent.
    Par Nidel dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 27/04/2007, 19h36
  3. lecture balises avec des &lt;
    Par petitelulu dans le forum XML/XSL et SOAP
    Réponses: 11
    Dernier message: 03/09/2003, 09h31
  4. Placement des balises avec DTD
    Par Keul125 dans le forum Valider
    Réponses: 4
    Dernier message: 28/05/2003, 12h08

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