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.