DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   XML, XSLT and XPATH (http://www.daniweb.com/forums/forum134.html)
-   -   XSLT Help (http://www.daniweb.com/forums/thread201122.html)

Tamir09 Jul 2nd, 2009 2:08 am
XSLT Help
 
Im trying to format my xslt form to a table that I have:

Horsepower-Electric Values
Revolutions Number of Disks
blank num 1 num 2 num 3
rev1 hpe1 hpe2 hpe3
rev2 hpe4 hpe5 hpe6
rev3 hpe7 hpe8 hpe9

And so far, Ive gotten the xslt form to come out somewhat similarly to that table, but the way its formatting just cant get fixed. I tried different ways, but I know Im missing something, and I cant figure out what. Heres the code for the xslt form:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">

<html>
      <body>
        <table border="2">
          <tr>
            <th colspan ="4" bgcolor="darkgrey">Horsepower-Electric Values</th>
          </tr>
          <tr>
            <th bgcolor="lightblue">Revolutions</th>
            <th colspan="7" bgcolor="tan">Number of Disks</th>
          </tr>
          <tr><xsl:for-each select="ArrayOfMyHPEData/MyHPEData">
            <td>
              <xsl:value-of select="n"/>
            </td>
          </xsl:for-each>
            </tr>
          <tr>
            <xsl:for-each select="ArrayOfMyHPEData/MyHPEData">
              <td>
                <xsl:value-of select="HPE"/>
              </td>
            </xsl:for-each>
          </tr>
          <xsl:for-each select="ArrayOfMyHPEData/MyHPEData">
            <tr>
              <td>
                <xsl:value-of select="Rev"/>
              </td>
              <!--<td>
                <xsl:value-of select="HPE"/>
              </td>  -->     
            </tr></xsl:for-each>
        </table>
      </body>
    </html>

  </xsl:template>
</xsl:stylesheet>

Does anyone know how I can fix this? Could it be the formatting problem is in my xml? Heres what the table is actually looking like when the xml combines with the xslt form.

HPEData.html

Tamir09 Jul 2nd, 2009 8:00 pm
Re: XSLT Help
 
Just for those who might need the solution for this, I have it as:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" indent="yes"/>

  <xsl:key name="key-revolution" match="Rev" use="text()"/>
  <xsl:key name="key-number" match="n" use="text()"/>


  <xsl:template match="/">
    <html>
      <body>
        <xsl:apply-templates select="ArrayOfMyHPEData" />
      </body>
    </html>
  </xsl:template>

  <xsl:template match="ArrayOfMyHPEData">
    <table border="2">
      <tr>
        <th colspan ="8" bgcolor="darkgrey">Horsepower-Electric Values</th>
      </tr>
      <tr>
        <th bgcolor="lightblue">Revolutions</th>
        <th colspan="7" bgcolor="tan">Number of Disks</th>
      </tr>
      <xsl:call-template name="PrintNumbers" />
      <xsl:for-each select="MyHPEData/Rev[generate-id() = generate-id(key('key-revolution', text()))]">
        <xsl:variable name="rev" select="." />
        <tr>
          <td>
            <xsl:value-of select="$rev" />
          </td>
          <xsl:for-each select="/ArrayOfMyHPEData/MyHPEData/n[generate-id() = generate-id(key('key-number', text()))]">
            <td>
              <xsl:value-of select="/ArrayOfMyHPEData/MyHPEData[Rev = $rev and n = current()]/HPE"/>
            </td>
          </xsl:for-each>
        </tr>
      </xsl:for-each>
    </table>
  </xsl:template>

  <xsl:template name="PrintNumbers">
    <tr>
      <td />
      <xsl:for-each select="MyHPEData/n[generate-id() = generate-id(key('key-number', text()))]">
        <td>
          <xsl:value-of select="."/>
        </td>
      </xsl:for-each>
    </tr>
  </xsl:template>
</xsl:stylesheet>


All times are GMT -4. The time now is 4:24 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC