Bonjour,
je rencontre actuellement des problèmes avec l'utilisation de fichier xsd, xsl, confxml...
Voici mon fichier xsd :
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 <?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 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
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 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 <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>
Ceci fonctionne très bien.
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);
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
Partager