Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2347 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  charger un xml avec un template xsl en javascript ? [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

charger un xml avec un template xsl en javascript ? [résolu]

n°1479187
fifiz
Posté le 21-11-2006 à 13:06:26  profilanswer
 

Bonjour,
 
J'ai des fichiers xml, ex :

Code :
  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <!DOCTYPE scenario SYSTEM "log.dtd">
  3. <?xml-stylesheet type="text/xsl" href="log.xsl"?>
  4. <scenario name='MAIN_CLONAGE_F06'>
  5.   <connexion login_webintake='LFZ' login_gp='W2J' environnement='02_25_34'/>
  6.   <file type='log' value='tst.log'/>
  7.   <file type='xml' value='tst.xml'/>
  8.   <set variable='m_DATE' value='23.02.04'/>
  9.   <scenario dateExe='2006-10-31_12-06-29' name='INIT_ENV'>
  10.     <option nameGP='SAIENV' title='' id='1' name='SAIENV'>
  11.       <step>
  12.         <actions>
  13.           <field_input type='saisie' option='SAIENV' value='OPCLUX' name='CODE_ENVIRONNEMENT'/>
  14.           <field_input name='DATE_TRAVAIL_FRM' type='saisie' option='SAIENV' value='23.02.04' memory='m_DATE'/>
  15.           <field_input type='passe' option='SAIENV' value='23/02/04' name='DATE_ANOMALIE_FRM'/>
  16.           <field_input type='saisie' option='SAIENV' value='O' name='OK'/>
  17.         </actions>
  18.         <observations/>
  19.       </step>
  20.     </option>
  21.   </scenario>
  22. </scenario>


 
associés à une feuille de style xsl, ex:

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  3. <xsl:import href="rsc.xsl"/>
  4. <xsl:output method='html' encoding='iso-8859-1'/>
  5. <xsl:template match="/">
  6.   <html>
  7.    <head>
  8.     <link rel="Stylesheet" type="text/css"><xsl:attribute name="href"><xsl:value-of select="$xslpath"/><xsl:value-of select="$xslcss"/></xsl:attribute></link>
  9.     <script language="javascript">xslpath='<xsl:value-of select="translate($xslpath,'\','/')"/>';</script>
  10.     <script language="javascript"><xsl:attribute name="src"><xsl:value-of select="$xslinit"/></xsl:attribute></script>
  11.     <script language="javascript"><xsl:attribute name="src"><xsl:value-of select="$xslpath"/><xsl:value-of select="$xsljs"/></xsl:attribute></script>
  12.    </head>
  13.    <body>
  14.     <br/>
  15.     <table class="host">
  16.      <tr>
  17.       <td class="logo">
  18.        <table class="logo">
  19.         <tr>
  20.          <td class="llogo"><img><xsl:attribute name="src"><xsl:value-of select="$xslpath"/><xsl:value-of select="$xslsgf"/></xsl:attribute></img></td>
  21.          <td class="clogo">xsl:value-of select="/scenario/@name"/></td>
  22.          <td class="rlogo">Log Xml</td>
  23.         </tr>
  24.        </table>
  25.        <table class="link">
  26.         <tr>
  27.  <td class="link"><a class ="menu_off" onclick="newtest()">Nouveau test</a></td>
  28. </tr>
  29.        </table>
  30.       </td>
  31.      </tr>
  32.      <tr>
  33.       <td class="host">
  34.        <table class="sub">
  35.         <tr>
  36.  <td>Scénario : <a target="_blank"><xsl:attribute name="href"><xsl:value-of select="/scenario/@source"/></xsl:attribute><xsl:value-of select="/scenario/@name"/></a></td>
  37.  <td>Exécuté le : <xsl:value-of select="/scenario/@dateExe"/></td>
  38.  <td>Par : <xsl:value-of select="/scenario/connexion/@login_webintake"/>/<xsl:value-of select="/scenario/connexion/@login_gp"/></td>
  39.  <td>Sur : <xsl:value-of select="/scenario/connexion/@environnement"/></td>
  40. </tr>
  41.        </table>
  42.        <br/>
  43.        <table class="sub">
  44.         <tr>
  45.          <td class="e t10">Fichiers joints : </td>
  46.  <td class="t10"><a target="_blank"><xsl:attribute name="href"><xsl:value-of select="/scenario/file[@type='log']/@value"/></xsl:attribute>Log Txt</a></td>
  47.  <td/>
  48.  <td class="t10">
  49.   <form name="options">
  50.    <select id="index" class="list" onchange="jumptoid()">
  51.     <xsl:call-template name="listoption"/>
  52.    </select>
  53.   </form>
  54.  </td>
  55.         </tr>
  56.        </table>
  57.       </td>
  58.      </tr>
  59.      <tr>
  60.       <td class="host">
  61.        <table class="sub">
  62.         <xsl:apply-templates select="*"/>
  63.        </table>
  64.       </td>
  65.      </tr>
  66.     </table>
  67.    </body>
  68.   </html>
  69. </xsl:template>
  70. ...


 
Je voudrais pouvoir avoir un lien dans la page après transformation xslt me permettant de recharger le document xml avec une autre stylesheet xsl qui resemble a la première mais dont les template sont différents.
 
J'ai fait la fonction suivante en javascript mais la transformation ne se fait pas correctement, IE6 m'ouvre une page html correspondant au contenu du <xsl:template match="/"> mais c'est comme si il ne trouvais rien en dessous, aucune requete XPath ne fonctionne ...
 

Code :
  1. function axparserxml(xmlfile,xslfile)
  2. {
  3. var result = window.open('','');
  4. result.document.open("text/html","replace" );
  5. var xml = new ActiveXObject("Microsoft.XMLDOM" );
  6. xml.async = false;
  7. xml.load(xmlfile);
  8. var xsl = new ActiveXObject("Microsoft.XMLDOM" );
  9. xsl.async = false;
  10. xsl.load(xslfile);
  11. result.document.write(xml.transformNode(xsl));
  12. result.document.close();
  13. }


 
Comment obtenir le résultat que je recherche ? Y a t'il une erreur dans mon script ?


Message édité par fifiz le 27-11-2006 à 12:55:30
mood
Publicité
Posté le 21-11-2006 à 13:06:26  profilanswer
 

n°1482232
fifiz
Posté le 27-11-2006 à 12:52:53  profilanswer
 

après quelques tatonnements cette fonction marche bien et permet de passer des paramètres au fichier xsl :
 

Code :
  1. function XmlTransform(xt_xml,xt_xsl,xt_param)
  2.  {
  3.  // Chargement XML
  4.   var xmldoc = new ActiveXObject("MSXML2.DOMDocument" )
  5.  xmldoc.async = false;
  6.  xmldoc.resolveExternals = true;
  7.  xmldoc.validateOnParse = false;
  8.  xmldoc.load(xt_xml); // alert(xmlfile);
  9.  if (xmldoc.parseError.errorCode != 0)
  10.   {
  11.   error = xmldoc.parseError;
  12.   alert('Error parsing XML file:\n' + error.reason + '[' + error.url + ': line ' + error.line + ', col ' + error.linepos + ']');
  13.   }
  14.  // Chargement XSL
  15.  var xsldoc = new ActiveXObject("MSXML2.FreeThreadedDOMDocument" );
  16.  xsldoc.async = false;
  17.  xsldoc.resolveExternals = true;
  18.  xsldoc.validateOnParse = false;
  19.  xsldoc.load(xt_xsl); // alert(xmlfile);
  20.  if (xsldoc.parseError.errorCode != 0)
  21.   {
  22.   error = xsldoc.parseError;
  23.   alert('Error parsing XSL file:\n' + error.reason + '[' + error.url + ': line ' + error.line + ', col ' + error.linepos + ']');
  24.   }
  25.  // Propriété de transformation
  26.  xsldoc.setProperty('SelectionLanguage','XPath')
  27.  xsldoc.setProperty('SelectionNamespaces','xmlns:xsl="http://www.w3.org/1999/XSL/Transform"')
  28.  var xtemplate = new ActiveXObject("MSXML2.XSLTemplate" );
  29.  xtemplate.stylesheet = xsldoc;
  30.  xprocessor = xtemplate.createProcessor();
  31.  xprocessor.input = xmldoc;
  32.  if (typeof xt_param != 'undefined') {xprocessor.addParameter("param",xt_param);}
  33.  // Transformation
  34.  xprocessor.transform();
  35.  xml2html = xprocessor.output; //alert(xml2htm);
  36.  // Affichage du résultat
  37.  var result = window; //var result = window.open("","" );
  38.         result.document.open();
  39.  result.document.write(xml2html);
  40.         result.document.close();
  41.  }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  charger un xml avec un template xsl en javascript ? [résolu]

 

Sujets relatifs
Comment déclarer un pointer sur classe template ?javascript dans chemin xml
[resolu]Delete cascade sans utiliser les foreign keys oO[resolu] automation internet explorer
[resolu] Drop down menuProblème avec structures et prototypage (Résolu)
Trier un tableau sous excel horizontalement avec VBA(résolu)Erreur javascript aléatoire
[Résolu] boucle for récursiveerreur execution javascript
Plus de sujets relatifs à : charger un xml avec un template xsl en javascript ? [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR