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

Format d'échange (XML, JSON...) Java Discussion :

Appliquer xslt sur xml


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Par défaut Appliquer xslt sur xml
    Bonjour;
    J'ai un fichier XSL que j'ai réussi à l'appliquer à XML en utilsant un editeur XML et j'ai eu mon résultat souhaité(création de plusieurs fichiers) sauf que j'ai voulu utiliser une classe java qui fait ça j'ai pas réussi à crée mes fichiers mais j'arrive à voir le résultat en console.
    Voici mon code java:
    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
      public static void transform(String xmlfile,String xsltfile) throws Exception
    {
    TransformerFactory fabrique;
    StreamSource xml;
    StreamSource xslt;
    StreamResult dest;
    Transformer transformation;
     
    fabrique = TransformerFactory.newInstance();
    xml = new StreamSource(new File(xmlfile ));
    xslt = new StreamSource(new File(xsltfile));
    transformation = fabrique.newTransformer(xslt);
       dest = new StreamResult(System.out);
    transformation.transform(xml, dest);
    }
    Veuillez m'aider afin de pouvoir crée mes fichiers.
    Merci

  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
    Je veux bien regarder si j'arrive à quelque chose, mais il me faudrait un exemple de XSLT créant plusieurs documents.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Par défaut
    Voici le fichier XML:
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet href="JavaBean.xsl" type="text/xsl"?>
     
    <classess>
    <classes name="Book">
    	<class>
    		<attribut name="title" type="String"/>
    		<attribut name="page" type="String"/>
    		<attribut name="category" type="String"/>
    	</class>
    </classes>
     
    <classes name="Writer">
    	<class>
    		<attribut name="last_name" type="String"/>
    	</class>
    </classes>
    <classes name="Librairie">
    	<class>
    		<attribut name="lib_name" type="String"/>
    	</class>
    </classes>
    </classess>
    et voici le code XSLT:
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="text" indent="no" encoding="utf-8"/>
     
    <xsl:template match="/">
    <xsl:for-each select="classess/classes">
    <xsl:result-document href="{./@name}.java" >
    	@Entity
    	public class <xsl:value-of select="./@name"/>
    	{  
    		 @Id
    		 <xsl:for-each select="./@name">
    		<xsl:apply-templates select="//attribut" mode="instanceVariable"/>
    		</xsl:for-each>
    		public <xsl:value-of select="./@name"/>()
    		{
    		}
    		<xsl:apply-templates select="//attribut" mode="accessor"/>
    		<xsl:apply-templates select="//attribut" mode="mutator"/>
    	}
    	</xsl:result-document>
    	</xsl:for-each>
    </xsl:template>
     
    <xsl:template match="Import">
    	import <xsl:value-of select="."/>;
    </xsl:template>
     
    <xsl:template match="attribut" mode="instanceVariable">
    		private <xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>;
    </xsl:template>
     
    <xsl:template match="attribut" mode="accessor">
    		public <xsl:value-of select="@type"/> get<xsl:call-template name="initCap">
    					<xsl:with-param name="x" select="@name"/>
    				</xsl:call-template>()
    		{
    			return <xsl:value-of select="@name"/>;
    		}
    </xsl:template>
     
    <xsl:template match="attribut" mode="mutator">
    		public void set<xsl:call-template name="initCap">
    					<xsl:with-param name="x" select="@name"/>
    				</xsl:call-template>(<xsl:value-of select="@type"/> the<xsl:call-template name="initCap">
    					<xsl:with-param name="x" select="@name"/>
    				</xsl:call-template>)
    		{
    			<xsl:value-of select="@name"/> = the<xsl:call-template name="initCap">
    				<xsl:with-param name="x" select="@name"/>
    			</xsl:call-template>;
    		}
    </xsl:template>
     
    <xsl:template name="initCap">
    	<xsl:param name="x"/>
    	<xsl:value-of select="translate(substring($x,1,1)
    							,'abcdefghijklmnopqrstuvwxyz'
    							,'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
    	<xsl:value-of select="substring($x,2)"/>
    </xsl:template>
     
    </xsl:stylesheet>
    Juste pour ce code il crée les fichiers tant qu'il y a de classe dans le fichier XML mais pour les attributs il les mets tous dans chaque classe et ce que je veux c'est que chaque classe prend seulement ses propres attributs.

  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
    Bon alors c'est quoi le problème ? Tu n'arrives pas à créer tes fichiers, ou bien les attributs sont recopiés partout ?

    Ce serait bien que quand ça change, tu le dises plus clairement.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Par défaut
    J'ai du mal à m'exprimer , excusez-moi!
    En faites j'ai ces deux problèmes:
    1. Tous les attributs sont recopiés dans chaque classe java et le fichier java est crée.
    2. En ajoutant le code java ci dessus j'aurai le même résultat mais en console, les fichiers ne se crées plus.

    Mon objectif c'est de créer mes fichiers java et chaque classe comprend seulement ces propres attributs.

    J'espère bien que j'étais un peu plus clair cette fois.
    Merci

  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 miled Voir le message
    J'ai du mal à m'exprimer , excusez-moi!
    Du moment que tu t'en rends compte, je suppose que tu feras des efforts plus tard, alors ça va.

    Citation Envoyé par miled Voir le message
    1. Tous les attributs sont recopiés dans chaque classe java et le fichier java est crée.
    Ça c'est une pure question XSLT.

    select="//attribut" va chercher tous les <attributs> du document. Ce n'est pas ce que tu veux. Il te faut tous les <attributs> enfants de la <classe> en cours. C'est select="attribut".

    Citation Envoyé par miled Voir le message
    2. En ajoutant le code java ci dessus j'aurai le même résultat mais en console, les fichiers ne se crées plus.
    Effectivement. Pour ma propre culture je vais essayer un peu.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [XSLT] mise en forme de termdefs sur XML perso
    Par Galeenet dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 26/06/2006, 14h51
  2. [XSLT] Appliquer un traitement xslt sur un fichier XML distant
    Par mabig dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 14/03/2006, 09h38
  3. Pb xml+xslt sur firefox
    Par BenSept dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 08/11/2005, 17h29
  4. Executer une feuille XSLT sur du xml
    Par naiadeKaren dans le forum Général Python
    Réponses: 2
    Dernier message: 24/08/2005, 14h53
  5. EXTENSIONS XML, XSL, XSLT, sur internet explorer 6 pack 2
    Par superjeanpi dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 08/12/2004, 12h11

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