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 :

Copie d'un xml ou presque..


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 78
    Par défaut Copie d'un xml ou presque..
    Bonjour,

    je souhaiterais copier un xml vers un autre xml excepté certaines balises...mais je n'y arrive pas

    Voici mon fichier
    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
     
          <GrpHdr> 
    	  <NbOfTxs>3</NbOfTxs> 
    	  <CtrlSum>11500000</CtrlSum> 
    	  <InitgPty>
    	         <Nm>Nom</Nm> 
    		 <PstlAdr>
    		      <StrtNm>Times Square</StrtNm> 
    		      <BldgNb>7</BldgNb> 
    		      <PstCd>NY 10036</PstCd> 
    		      <TwnNm>New York</TwnNm> 
    		      <Ctry>US</Ctry> 
    		   </PstlAdr>
              </InitgPty>
          </GrpHdr>

    Le but de la manip est d'avoir le même fichier sans la balise <Nm>

    Je me bats avec mon fichier xslt depuis un moment : J'arrive à copier le fichier complet ou à copier certains blocs, par exemple <PstlAdr> Mais je n'arrive pas à copier ligne par ligne... a moins qu'il y ait une commande qui filtrerait la copie...(là je rêve un peu je pense)

    Voici mon fichier xslt que j'aimerais rendre correct
    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"?>
    <!--Generated by SWIFTStandards Workstation (build:R7.1.30.4) on 2012 Jun 07 20:47:19-->
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    	<xsl:output method="xml" encoding="UTF-8" indent="yes" />
    	<xsl:template match="/"> 
    		<xsl:copy select="//GrpHdr"/>
    		<xsl:copy-of select="//PstlAdr">
    			<xsl:apply-templates select="node()"/>
    		</xsl:copy-of>
    	</xsl:template>
    </xsl:stylesheet>

    mais évidemment ça marche pas.....

    Au secours !

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 78
    Par défaut
    Bon alors j'ai pas encore trouvé....

    mais j'ai réussi à masquer la donnée

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!--Generated by SWIFTStandards Workstation (build:R7.1.30.4) on 2012 Jun 07 20:47:19-->
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    	<xsl:output method="xml" encoding="UTF-8" indent="yes" />
            <xsl:template match="node() | @*">
    		<xsl:copy>
    			<xsl:apply-templates select="@* | node()"/>
    		</xsl:copy>
    	</xsl:template>
     
    	<xsl:template match="Nm">
    		<xsl:copy>
    			<xsl:text>vvvvvvvvvvvvvvvvvvvvv</xsl:text>
    		</xsl:copy>
    	</xsl:template>
     
    </xsl:stylesheet>

    après si on peut la supprimer du nouveau fichier ça serait mieux...

    merci d'avance

  3. #3
    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
    Ben... Au lieu de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:copy>
      <xsl:text>vvvvvvvvvvvvvvvvvvvvv</xsl:text>
    </xsl:copy>
    ce que tu veux faire, c'est rien.

    Donc, au lieu de mettre ça, tu mets rien. Tu ouvres le template, tu le fermes, et entre les deux il n'y a rien.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 78
    Par défaut
    C'est bon ça marche !!

    T'as raison c'était tout bête

    Merci encore !

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 78
    Par défaut
    Par contre,

    sais tu pourquoi, si je rajoute une balise avec un namespace, ça ne marche pas ? En fait ça copie mon fichier mais sans appliquer les suppressions :
    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
     
    <Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.04">
    <CstmrCdtTrfInitn>
       	<GrpHdr>
     		<MsgId>ABC/120928/CCT001</MsgId> 
    		<CreDtTm>2012-09-28T14:07:00</CreDtTm> 
    		<NbOfTxs>3</NbOfTxs> 
    		<CtrlSum>11500000</CtrlSum> 
    		<InitgPty>
    			<Nm>Nom</Nm> 
    			<PstlAdr>
    			    <StrtNm>Times Square</StrtNm> 
    			    <BldgNb>7</BldgNb> 
    			    <PstCd>NY 10036</PstCd> 
    			    <TwnNm>New York</TwnNm> 
    			    <Ctry>US</Ctry> 
    		    </PstlAdr>
              </InitgPty>
      	</GrpHdr>
    </CstmrCdtTrfInitn>
    </Document>
    et pourtant si j'enlève la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.04"
    , de la balise <Document> ça marche...

  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
    Parce que
    - les éléments enfants héritent des namespaces de leurs parents. Donc si tu mets ce xmlns dans <Document>, ancêtre de tous les éléments, alors il s'applique à tous les éléments.

    - le namespace d'un élément fait partie de son nom. On ne doit pas l'ignorer, le négliger, faire comme si c'était pas important. C'est important. Si tu veux l'élement <Nm> du namespace pain, tu ne dois pas demander l'élément <Nm>. Tu dois demander l'élément <Nm> du namespace pain.

    La solution sera d'habitude :

    - de déclarer quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlns:pain="urn:iso:std:iso:20022:tech:xsd:pain.001.001.04"
    dans la racine de la stylesheet. À la place de pain tu peux mettre zorro ou toto ou ce que tu veux.

    - De remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="Nm">
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="pain:Nm">
    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. [XSLT] Copie d'un XML avec balisage des elements text()
    Par boooob dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 26/11/2010, 15h59
  2. [SAX] Copie de fichier XML
    Par tit_v dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 02/10/2009, 14h03
  3. [XSLT] Copie d'un XML, avec tri
    Par Taz dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 20/04/2007, 13h48
  4. [DOM XML] Copie de fichier XML
    Par AlphonseBrown dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 26/03/2006, 23h11
  5. [xsl] xsl juste pour faire copie d'un xml
    Par peppena dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/02/2004, 16h17

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