problème avec XSL pour générer HTML à partir de XML

problème avec XSL pour générer HTML à partir de XML - XML/XSL - Programmation

Marsh Posté le 09-09-2008 à 10:14:49    

Bonjour,  
 
j'ai un fichier xml et j'arrive pas à le convertir en html avec xsl, sous la forme souhaité.
le fichier xml décrit la structure d'un module de test. en fait, un module de test peut etre composé de plusieurs groupes de test et plusieurs cas de test,
et chaque groupe de test peut etre composé de plusieurs cas de test.
ce que je souhaite avoir en html : un tableau principal pour le test module, et à l'intérieur de ce tableau autant de tableaux que de groupes de test et des cas de test.
 
le module de test, les groupes de test et les cas de test ont la meme squelette à savoir : balise "préparation", balise "contraintes", balise "conditions", balise "sequence" et balise "completion" et chaque balise peut avoir d'autres noeuds. et je veux récuperer tout leur contenus avec les noeuds aussi mais j'arrive pas à le faire.
voici le code xml :
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test case stylesheet.xsl" ?>
<!--
    Document   : newXMLDocument1.xml
    Created on : 3 septembre 2008, 12:18
    Author     : uid0136
    Description:
        Purpose of the document follows.
-->
 
 
<testmodule title="Start" version="1.0">
 
  <sut>
 
    <info>
 
      <name>Functions</name>
 
      <description>This is just a demo test specification that serves as an example.</description>
 
    </info>
 
  </sut>
 
  <extendedinfo type="html">
 
    &lt;img src="vector.gif" alt="Example of how to embed HTML code within the XML code "border="0"/&gt;
 
  </extendedinfo>
 
  <engineer>
 
    <info>
 
      <name>Name</name>
 
      <description>Engineer ABC</description>
 
    </info>
 
    <info>
 
    <name>Ident-Number</name>
 
      <description>0815</description>
 
    </info>
 
    <info>
 
      <name>Company</name>
 
      <description>Vector Informatik GmbH</description>
 
    </info>
 
  </engineer>
 
  <constraints>
 
      <cycletime_abs min="0" max="600">
 
        <canmsg id="WiperControl"/>
 
      </cycletime_abs>
 
    </constraints>
  <testgroup title="Check the testdriver itself. It has to provide the washing request message every interval">
 
   <miscinfo title="">
 
      <info>
 
        <name>Additional information for Constraints</name>
 
        <description>With the constraints, the test environment is supervised. Here, we supervise the driving message against cyclically availability. Since some signals onto this message will force a spontaneous sending, the minimum cycle time is not checked (=0)</description>
 
      </info>
 
      <info>
 
        <name>Additional information for Conditions</name>
 
        <description>With the conditions, the SUT is supervised. Here, we supervise the status-message that should occur cyclically. Since some signals onto this message will force a spontaneous sending, the minimum cycle time is not checked (=0)</description>
 
      </info>
 
    </miscinfo>
 
    <constraints>
 
      <cycletime_abs min="0" max="600">
 
        <canmsg id="WiperControl"/>
 
      </cycletime_abs>
 
    </constraints>
 
    <conditions>
 
      <cycletime_abs min="0" max="1100">
 
        <canmsg id="WipingStatus"/>
 
      </cycletime_abs>
 
    </conditions>
 
    <testcase ident="Wiping Level 2" title="Wiping level 2, fall back to off">
 
      <initialize title="Select wiping level 2" wait="1500">
 
        <cansignal name="WipingLevel">2</cansignal>
 
        <cansignal name="WasherRequest">0</cansignal>
 
      </initialize>
 
      <statechange wait="4000" title="After switching off the wipers, they shall have reached the position 0">
 
        <in>
 
          <cansignal name="WipingLevel">0</cansignal>
 
          <cansignal name="WasherRequest">0</cansignal>
 
        </in>
 
        <expected>
 
          <envvar name="EnvWiperPosition">0</envvar>
 
        </expected>
 
      </statechange>
 
    </testcase>
 
  </testgroup>
     
  <testcase ident="Wiping Level 2" title="Wiping level 2, fall back to off">
 
      <initialize title="Select wiping level 2" wait="1500">
 
        <cansignal name="WipingLevel">2</cansignal>
 
        <cansignal name="WasherRequest">0</cansignal>
 
      </initialize>
 
      <statechange wait="4000" title="After switching off the wipers, they shall have reached the position 0">
 
        <in>
 
          <cansignal name="WipingLevel">0</cansignal>
 
          <cansignal name="WasherRequest">0</cansignal>
 
        </in>
 
        <expected>
 
          <envvar name="EnvWiperPosition">0</envvar>
 
        </expected>
 
      </statechange>
 
    </testcase>
</testmodule>
 
voici le code xsl:
<?xml version="1.0" encoding="UTF-8"?>
 
<!--
    Document   : test case stylesheet4.xsl
    Created on : 4 septembre 2008, 15:49
    Author     : uid0136
    Description:
        Purpose of transformation follows.
-->
 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html"/>
 
    <!-- TODO customize transformation rules  
         syntax recommendation http://www.w3.org/TR/xslt  
    -->
    <xsl:template match="/">
        <html>
            <head></head>
            <body><p><I><font size="5" color="Blue"><xsl:value-of select="testmodule/@title"/></font></I></p>
                <table border="2">
                    <tr>
                        <th>preparation</th>
                        <th>constraints</th>
                        <th>conditions</th>
                        <th>sequence</th>
                        <th>completion</th>
                    </tr>
                    <tr>
                        <td><xsl:value-of select="testmodule/preparation"/></td>
                        <td><xsl:value-of select="testmodule/constraints"/></td>
                        <td><xsl:value-of select="testmodule/conditions"/></td>
                        <td><!--<xsl:if test="name = 'testgroup'or'testcase'">-->
                        <xsl:apply-templates /><!--</xsl:if>--></td>
                        <td><xsl:value-of select="testmodule/completion"/></td>
                       
                    </tr>
                </table>
               
            </body>
        </html>
    </xsl:template>
   <xsl:template match="testgroup" >
       <table border="4"><p>test group : <I><font size="5" color="Blue"><xsl:value-of select="@title"/></font></I></p>
           <tr>
               <th>preparation</th>
               <th>constraintes</th>
               <th>conditions</th>
               <th>sequence</th>
               <th>completion</th>
           </tr>
            <tr>    
            <td><xsl:copy-of select="preparation"/></td>
               <td><xsl:value-of select="constraints"/></td>
               <td><xsl:copy-of select="conditions"/></td>                  
               <td><xsl:apply-templates select="testcase"/></td>
               <td><xsl:value-of select="completion"/></td></tr>
       </table>
   </xsl:template>
   <xsl:template match="testcase" >
     <table border="4"><p>testcase : <I><font size="5" color="Blue"><xsl:value-of select="@title"/></font></I></p>
           <tr>
               <th>preparation</th>
               <th>constraints</th>
               <th>conditions</th>
               <th>sequence</th>
               <th>completion</th>
           </tr>  
           <tr>
               <td><xsl:copy-of select="preparation"/></td>
               <td><xsl:value-of select="constraints"/></td>
               <td><xsl:value-of select="conditions"/></td>
               <td><xsl:copy/></td>
               <td><xsl:value-of select="completion"/></td>
           </tr>
           </table>  
   </xsl:template>
</xsl:stylesheet>
 
merci pour votre aide.


Message édité par SAIPA le 10-09-2008 à 09:36:28
Reply

Marsh Posté le 09-09-2008 à 10:14:49   

Reply

Marsh Posté le 16-09-2008 à 09:50:57    

Si tu nous donnais un exemple du html que tu veux en sortie pour le xml donné?  :whistle:

Reply

Sujets relatifs:

Leave a Replay

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