[AIDE] XSD, XSL, fichier config...

XSD, XSL, fichier config... [AIDE] - Java - Programmation

Marsh Posté le 06-05-2011 à 09:48:30    

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

Code :
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3. <xsd:element name="configuration" >
  4.  <xsd:complexType>
  5.   <xsd:sequence>
  6.    <xsd:element ref="zonepubliabledematprohaut"/>
  7.    <xsd:element ref="zonepubliabledematprobas"/>
  8.   </xsd:sequence>
  9.  </xsd:complexType>
  10. </xsd:element>
  11. <xsd:element name="zonepubliabledematprohaut">
  12.  <xsd:complexType>
  13.   <xsd:attribute name="nomzone" use="required" type="xsd:string"/>
  14.   <xsd:attribute name="valeur" use="required" type="xsd:string"/>
  15.  </xsd:complexType>
  16. </xsd:element>
  17. <xsd:element name="zonepubliabledematprobas">
  18.  <xsd:complexType>
  19.   <xsd:attribute name="nomzone" use="required" type="xsd:string"/>
  20.   <xsd:attribute name="valeur" use="required" type="xsd:string"/>
  21.  </xsd:complexType>
  22. </xsd:element>
  23. </xsd:schema>


 
Voici le fichier xsl :
 

Code :
  1. <?xml version="1.0"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3.         <xsl:output method= "xml"  version="1.0" encoding="ISO-8859-1" omit-xml-declaration="no" standalone="yes" indent="yes"  />
  4. <xsl:template match="/">
  5.    <xsl:apply-templates select="configuration" />
  6. </xsl:template>
  7. <xsl:template match="Configuration">
  8.  <configuration>
  9.    <xsl:apply-templates />
  10.  </configuration>
  11. </xsl:template>
  12. <xsl:template match="Config_Item">
  13.  <xsl:variable name="upperlow" select="translate(Config_Nom,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')"/>
  14.  <xsl:element  name ="{$upperlow}">
  15.   <xsl:attribute  name = "nomzone">
  16.    <xsl:if test="./Config_Nomzone">
  17.     <xsl:value-of select="./Config_Nomzone" />
  18.    </xsl:if>
  19.    <xsl:if test="./Config_Logo">
  20.     <xsl:value-of select="./Config_Logo/@identifiant" />
  21.    </xsl:if>
  22.    <xsl:if test="./Config_Document">
  23.     <xsl:value-of select="./Config_Document/@identifiant" />
  24.    </xsl:if>
  25.   </xsl:attribute>
  26.   <xsl:attribute  name = "valeur">
  27.    <xsl:if test="./Config_Valeur">
  28.     <xsl:value-of select="./Config_Valeur" />
  29.    </xsl:if>
  30.    <xsl:if test="./Config_Logo">
  31.     <xsl:value-of select="./Config_Logo/@identifiant" />
  32.    </xsl:if>
  33.    <xsl:if test="./Config_Document">
  34.     <xsl:value-of select="./Config_Document/@identifiant" />
  35.    </xsl:if>
  36.   </xsl:attribute>
  37.   <xsl:apply-templates />
  38.  </xsl:element>
  39. </xsl:template>
  40. <xsl:template match="comment() | processing-instruction() | text()" />
  41. </xsl:stylesheet>


 
Voici mon fichier confxml :
 

Code :
  1. <Configuration>
  2. <Config_Item>
  3.  <Config_Description/>
  4.  <Config_Nom>ZonePubliableDematProHaut</Config_Nom>
  5.  <Config_Nomzone>IncitationHaut</Config_Nomzone>
  6.  <Config_Valeur>SMC_ZONE_SE_20101014032030</Config_Valeur>
  7. </Config_Item>
  8. <Config_Item>
  9.  <Config_Description/>
  10.  <Config_Nom>ZonePubliableDematProBas</Config_Nom>
  11.  <Config_Nomzone>IncitationBas</Config_Nomzone>
  12.  <Config_Valeur>SMC_ZONE_SE_20101014032031</Config_Valeur>
  13. </Config_Item>
  14. </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. File myFile = new File(configXML);
  2.  boolean filePresent = myFile.exists();
  3.  if (!filePresent) {
  4.   if (log.isInfoEnabled()) {
  5.    log
  6.      .info("Le fichier de configuration XML Documentum n'est pas present dans "
  7.        + configXML);
  8.   }
  9.  } else {
  10.   if (log.isInfoEnabled())
  11.    log
  12.      .info("Le fichier de configuration XML Documentum a été trouvé" );
  13.   String xmlTemp = "";
  14.   try {
  15.    // Lecture du fichier de configuration
  16.    FileReader xmlEntree = new FileReader(configXML);
  17.    xmlTemp = XmlTraitement.transforme(xmlEntree,
  18.      XmlConstants.PATH_XSL_ETAPE1);
  19.    XsdValidatorHandler validation = XmlTraitement.xmlValide(
  20.      xmlTemp, XmlConstants.PATH_VALIDATION_XSD_ETAPE1);
  21.    log.debug("################# "+xmlTemp);
  22.   } catch (Exception e) {
  23.    log.error(e.getCause());
  24.   }
  25.   InputStream is = null;
  26.   if (!"".equals(xmlTemp)) {
  27.    try {
  28.     is = new ByteArrayInputStream(xmlTemp.getBytes("UTF-8" ));
  29.    } catch (UnsupportedEncodingException e) {
  30.     log.error(e.getCause());
  31.    }
  32.   }
  33.   if (is != null) {
  34.    HashMap<String, Class<?>> alias = new HashMap<String, Class<?>>();
  35.    alias.put("configuration", Configuration.class);
  36.    alias.put("zonepubliabledematprohaut", ZonePubliableDematProHaut.class);
  37.    alias.put("nomzone", String.class);
  38.    alias.put("valeur", String.class);
  39.    alias.put("zonepubliabledematprobas", ZonePubliableDematProBas.class);
  40.    alias.put("nomzone", String.class);
  41.    alias.put("valeur", String.class);
  42.    conf = (Configuration) XstreamUtils.getObjectFromXML(is, alias);
  43.    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


Message édité par benjibul le 06-05-2011 à 09:57:49
Reply

Marsh Posté le 06-05-2011 à 09:48:30   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed