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 :

appliqer xslt à xml avec Java


Sujet :

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

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 15
    Points : 12
    Points
    12
    Par défaut appliqer xslt à xml avec Java
    Bonjour;
    J'ai un fichier XSLT que lorsque je l'applique sur un fichier XML en utilisant un éditeur XML (OrangeVolt de Eclipse) j'aurais le résultat désiré qui est la création de plusieurs fichiers ".java".
    voila mes fichiers:
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet href="JavaBeans.xsl type="text/xsl"?><classess>
    <classes name= "Book">
        <class>
            <attribut name="title" type= "String"/>
            <attribut name="pages" type= "String"/>
            <attribut name="category" type= "String"/>
         </class>
    </classes>
    <classes name= "Writer">
        <class>
            <attribut name="name" type= "String"/>
         </class>
    </classes>
    <classes name= "Library">
        <class>
            <attribut name="name" type= "String"/>
         </class>
    </classes>
    </classess>
    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
    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
    95
    96
    97
    98
    99
    100
    101
    <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="file:///C:\persistance\{@name}.java">
    	@Entity
    	public class <xsl:value-of select="./@name"/>0
    	{  
    		 @Id
    		 <xsl:for-each select="./class">
    		<xsl:apply-templates select="attribut" mode="instanceVariable"/>
     
    		</xsl:for-each>
     
    		public <xsl:value-of select="@name"/>()
    		{
    		}
    		<xsl:for-each select="./class">
    		<xsl:apply-templates select="attribut" mode="accessor"/>
    		<xsl:apply-templates select="attribut" mode="mutator"/>
     
    		</xsl:for-each>
    <xsl:result-document href="file:///C:\dao\{@name}DAO.java">
    @Stateless
    	public class <xsl:value-of select="./@name"/>DAO
    	{  
    		 @PersistenceContext 
    		EntityManager entityManager;
     
    		public void add(<xsl:value-of select="@name"/> the<xsl:value-of select="@name"/>)
    		{
    		entityManager.persist(the<xsl:value-of select="@name"/>);
    		}
     
    		public void delete(<xsl:value-of select="@name"/> the<xsl:value-of select="@name"/>)
    		{
    		entityManager.remove(the<xsl:value-of select="@name"/>);
    		}
     
    		public List &lt;<xsl:value-of select="@name"/>&gt;listAll()
    		{
    		return entityManager.createQuery("FROM <xsl:value-of select="@name"/>").getResultList();
    		}
     
    		public void update(<xsl:value-of select="@name"/> the<xsl:value-of select="@name"/>)
    		{
    		entityManager.merge(the<xsl:value-of select="@name"/>);
    		}
     
     
    	}
    	</xsl:result-document>
    	}
    	<xsl:apply-templates select="attribut" mode="tostring"/>
    	</xsl:result-document>
    	</xsl:for-each>
    </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="tostring">
     
    			public String toString() {
    			return "Book [<xsl:value-of select="@name"/>" + <xsl:value-of select="@name"/>+ ", <xsl:value-of select="@name"/>=" + <xsl:value-of select="@name"/>+ ", category="
    					+ <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>
    Mon problème c'est que je veux créer mes fichiers avec une fonction java, j'ai essayer de créer cette fonction mais en l'exécutant j'avais un seul fichier qui comporte tous. Et moi ce que je veux c'est de créer chaque classe dans un fichiers.
    voici la fonction utilisé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
    19
    20
    public class Transform_xsl_xml
      {
      public static void main()
        {
        try
          {
          StreamSource xmlSource = new StreamSource("C:/monxml.xml");
          StreamSource xsltSource = new StreamSource("C:/monxslt.xsl");
          FileOutputStream fResult = new FileOutputStream("C:/monjava.java");
          StreamResult transResult = new StreamResult(fResult);
          TransformerFactory transFact = TransformerFactory.newInstance();
          Transformer trans = transFact.newTransformer(xsltSource);
          trans.transform(xmlSource, transResult);
          }
        catch (Exception e)
          {
          e.printStackTrace( );
          }
        }
      }
    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 084
    Points
    7 084
    Par défaut
    Le principe est le suivant :
    • Pourcourir les noeuds "/classess/classes" (Note: j'aurais appelé la racine "class-set" ou bien "package".
    • Pour chaque noeud tu exécutes ta transformation vers un fichier dont aura généré le nom à partir des informations du noeud courant.

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Bonjour;

    Manuellement(avec le plugin Eclipse), en exécutant mon fichier XML appliqué à mon fichier XSLT j'arrive à créer plusieurs fichiers pour chaque classe (j'ai utilisé pour ça XSLT2.0 et la balise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:result-document href="file:///C:\persistance\{@name}.java">
    .
    Mais ce que je doit faire c'est d'écrire une fonction java qui fait la même chose, sauf que en essayant de la programmer (voir ci dessus) j'ai eu comme résultat un seul fichier qui contient le contenu de tous les fichiers.

    je suis vraiment coincé dans cette étape.
    Veuillez s'il vous plait aidez moi à trouvez un solution pour corriger ma fonction java et avoir le résultat demandé.

Discussions similaires

  1. affichage de fichier XML avec java
    Par smisoufafa dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 01/04/2008, 11h57
  2. Modification entête XML avec Java pour RSS
    Par Hyst76 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 27/09/2007, 16h58
  3. parser du xml avec java
    Par 080983 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 30/07/2007, 09h56
  4. Java et XML : Traitement d'un fichier XML avec JAVA
    Par nice dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 18/05/2006, 21h24
  5. [XML] Comment parser ce fichier XML avec java !
    Par jlassira dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 13/03/2006, 12h56

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