Bonjour,

je rencontre actuellement des problèmes avec l'utilisation de fichier xsd, xsl, confxml...

Voici mon fichier xsd :

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
 
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 
 
	<xsd:element name="configuration" >
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="zonepubliabledematprohaut"/>
				<xsd:element ref="zonepubliabledematprobas"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
 
 
	<xsd:element name="zonepubliabledematprohaut">
		<xsd:complexType>
			<xsd:attribute name="nomzone" use="required" type="xsd:string"/>
			<xsd:attribute name="valeur" use="required" type="xsd:string"/>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="zonepubliabledematprobas">
		<xsd:complexType>
			<xsd:attribute name="nomzone" use="required" type="xsd:string"/>
			<xsd:attribute name="valeur" use="required" type="xsd:string"/>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>
Voici le fichier xsl :

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
 
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
 
 
 
        <xsl:output method= "xml"  version="1.0" encoding="ISO-8859-1" omit-xml-declaration="no" standalone="yes" indent="yes"  />
 
	<xsl:template match="/">
				<xsl:apply-templates select="configuration" />
	</xsl:template>
 
	<xsl:template match="Configuration">
		<configuration>
				<xsl:apply-templates />
		</configuration>
	</xsl:template>
 
	<xsl:template match="Config_Item">
		<xsl:variable name="upperlow" select="translate(Config_Nom,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')"/>
 
		<xsl:element  name ="{$upperlow}">
			<xsl:attribute  name = "nomzone">
				<xsl:if test="./Config_Nomzone"> 
					<xsl:value-of select="./Config_Nomzone" />
				</xsl:if>
				<xsl:if test="./Config_Logo"> 
					<xsl:value-of select="./Config_Logo/@identifiant" />
				</xsl:if>
				<xsl:if test="./Config_Document"> 
					<xsl:value-of select="./Config_Document/@identifiant" />
				</xsl:if>
			</xsl:attribute>
			<xsl:attribute  name = "valeur">
				<xsl:if test="./Config_Valeur"> 
					<xsl:value-of select="./Config_Valeur" />
				</xsl:if>
				<xsl:if test="./Config_Logo"> 
					<xsl:value-of select="./Config_Logo/@identifiant" />
				</xsl:if>
				<xsl:if test="./Config_Document"> 
					<xsl:value-of select="./Config_Document/@identifiant" />
				</xsl:if>
			</xsl:attribute>
 
			<xsl:apply-templates />
 
		</xsl:element>
	</xsl:template>
 
 
	<xsl:template match="comment() | processing-instruction() | text()" />
 
</xsl:stylesheet>
Voici mon fichier confxml :

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
 
<Configuration>
	<Config_Item>
		<Config_Description/>
		<Config_Nom>ZonePubliableDematProHaut</Config_Nom>
		<Config_Nomzone>IncitationHaut</Config_Nomzone>
		<Config_Valeur>SMC_ZONE_SE_20101014032030</Config_Valeur>
	</Config_Item>
 
	<Config_Item>
		<Config_Description/>
		<Config_Nom>ZonePubliableDematProBas</Config_Nom>
		<Config_Nomzone>IncitationBas</Config_Nomzone>
		<Config_Valeur>SMC_ZONE_SE_20101014032031</Config_Valeur>
	</Config_Item>
 
</Configuration>
Voici le code ou je récupère mon fichier de config, le transforme grâce au fichier xsl, puis le valide avec le fichier xsd :

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
 
	File myFile = new File(configXML);
		boolean filePresent = myFile.exists();
 
		if (!filePresent) {
			if (log.isInfoEnabled()) {
				log
						.info("Le fichier de configuration XML Documentum n'est pas present dans "
								+ configXML);
			}
		} else {
			if (log.isInfoEnabled())
				log
						.info("Le fichier de configuration XML Documentum a été trouvé");
 
			String xmlTemp = "";
 
			try {
				// Lecture du fichier de configuration
				FileReader xmlEntree = new FileReader(configXML);
				xmlTemp = XmlTraitement.transforme(xmlEntree,
						XmlConstants.PATH_XSL_ETAPE1);
				XsdValidatorHandler validation = XmlTraitement.xmlValide(
						xmlTemp, XmlConstants.PATH_VALIDATION_XSD_ETAPE1);
				log.debug("################# "+xmlTemp);
			} catch (Exception e) {
				log.error(e.getCause());
			}
 
			InputStream is = null;
 
			if (!"".equals(xmlTemp)) {
				try {
					is = new ByteArrayInputStream(xmlTemp.getBytes("UTF-8"));
				} catch (UnsupportedEncodingException e) {
					log.error(e.getCause());
				}
			}
 
			if (is != null) {
				HashMap<String, Class<?>> alias = new HashMap<String, Class<?>>();
 
				alias.put("configuration", Configuration.class);
				alias.put("zonepubliabledematprohaut", ZonePubliableDematProHaut.class);
				alias.put("nomzone", String.class);
				alias.put("valeur", String.class);
				alias.put("zonepubliabledematprobas", ZonePubliableDematProBas.class);
				alias.put("nomzone", String.class);
				alias.put("valeur", String.class);
 
				conf = (Configuration) XstreamUtils.getObjectFromXML(is, alias);
				listeConfiguration.add(conf);
Ceci fonctionne très bien.
Cependant, ce que je souhaite c'est pouvoir mettre soit plusieurs balises <Configuration> ou plusieurs balises <zonepubliabledematprohaut> ou <zonepubliabledematprobas> dans mon fichier. Mais c'est la que je n'y parviens pas!

Je sais pas si j'ai été très clair?!!

Si quelqu'un a une idée...

Merci