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
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 <?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>
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.
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 <<xsl:value-of select="@name"/>>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>
voici la fonction utilisée:
Merci d'avance pour votre aide.
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( ); } } }
Partager