XSD, XSL, fichier config.
Bonjour,
je rencontre actuellement des problèmes avec l'utilisation de fichier xsd, xsl, confxml...
Voici mon fichier xsd :
Code:
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:
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:
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:
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