Announcement

Collapse
No announcement yet.

XML Tabelle erzeugen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML Tabelle erzeugen

    Hallo alle miteinander ich bin ziemlich neu hier.
    Ich hab ein kleines Problem mit einem css-Style-Sheet für eine xml-Datei.
    Ich versuche eine Tabelle zu erstellen, die den Namen von Daten, sowie deren Wert enthält.

    Mein Problem ist, dass ich zwar die Daten unter Station "Inlet" auch in die Spalte "Inlet" bekomme, jedoch schaffe ich es nicht die Daten von Station "Outlet" in die Spalte "Outlet" zu bekommen. Diese Daten werden dann immer wieder in die allererste Spalte geschrieben.

    Weiß jemand von euch eine Lösung?

    Vielen Dank schon mal.


    Mit freundlichen Grüßen

    leo


    Zuerst die XML-Datei:
    <?xml version="1.0" ?>
    <?xml-stylesheet type="text/xsl" href="xmf_stylesheet.xsl" ?>
    <Computation name="Test_1">
    <Station name="Inlet">
    <GeometricalData>
    <float name="Hub radius" unit="[m]">0.1330986</float>
    <float name="Shroud radius" unit="[m]">0.1384096</float>
    <float name="Area" unit="[m2]">1.649611E-05</float>
    <integer name="Number of blades">21</integer>
    <float name="Rotational speed" unit="[rad/s]">0</float>
    </GeometricalData>
    </Station>
    <Station name="Outlet">
    <GeometricalData>
    <float name="Hub radius" unit="[m]">0.06493923</float>
    <float name="Shroud radius" unit="[m]">0.06823999</float>
    <float name="Area" unit="[m2]">0.0001187011</float>
    <integer name="Number of blades">67</integer>
    <float name="Rotational speed" unit="[rad/s]">2513.274</float>
    </GeometricalData>
    </Station>
    </Computation>


    Nun das zugehörige Style-Sheet (xmf_stylesheet.xsl):

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <html>
    <body>
    <xsl:for-each select="Computation">
    <table border="1" width="750">
    <colgroup>
    <col width="100"></col>
    <col width="100"></col>
    <col width="100"></col>
    </colgroup>
    <tr>
    <xsl:for-each select="Station">
    <xsl:if test="@name=&quot;Inlet&quot;">
    <th align="left"></th>
    </xsl:if>
    <th align="left"><xsl:value-of select="@name"/></th>
    </xsl:for-each>
    </tr>
    </table>
    <table border="1" width="750">
    <colgroup>
    <col width="100"></col>
    <col width="100"></col>
    <col width="100"></col>
    </colgroup>
    <xsl:for-each select="Station">
    <xsl:for-each select="GeometricalData/*">
    <tr>
    <xsl:if test="../../@name=&quot;Inlet&quot;">
    <td align="left"><xsl:value-of select="@name"/></td>
    </xsl:if>
    <td align="left"><xsl:value-of select="."/></td>
    </tr>
    </xsl:for-each>
    </xsl:for-each>
    </table>
    </xsl:for-each>
    </body>
    </html>
    </xsl:template>
    </xsl:stylesheet>

  • #2
    Bitte die nächste XSLT-Frage im passenden Forum posten. Hier ein Ansatz für die genannten XML-Daten:
    Code:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
        <html>
          <body>
            <xsl:for-each select="Computation">
              <table border="1" width="750">
                <tr>
                  <th align="left">Data</th>
                  <xsl:for-each select="Station">
                    <th align="left">
                      <xsl:value-of select="@name"/>
                    </th>
                  </xsl:for-each>
                </tr>
                <xsl:for-each select="//Station[1]/GeometricalData/*">
                  <xsl:variable name="pos" select="position()"/>
                  <tr>
                    <td><xsl:value-of select="@name"/></td>
                    <td><xsl:value-of select="."/></td>
                    <td><xsl:value-of select="following::GeometricalData[1]/child::*[$pos]"/></td>
                  </tr>             
                </xsl:for-each>
              </table>
            </xsl:for-each>
          </body>
        </html>
      </xsl:template>
    </xsl:stylesheet>
    Ergebnis-HTML-Tabelle:
    Code:
    <table border="1" width="750">
      <tr>
        <th align="left">Data</th>
        <th align="left">Inlet</th>
        <th align="left">Outlet</th>
      </tr>
      <tr>
        <td>Hub radius</td>
        <td>0.1330986</td>
        <td>0.06493923</td>
      </tr>
      <tr>
        <td>Shroud radius</td>
        <td>0.1384096</td>
        <td>0.06823999</td>
      </tr>
      <tr>
        <td>Area</td>
        <td>1.649611E-05</td>
        <td>0.0001187011</td>
      </tr>
      <tr>
        <td>Number of blades</td>
        <td>21</td>
        <td>67</td>
      </tr>
      <tr>
        <td>Rotational speed</td>
        <td>0</td>
        <td>2513.274</td>
      </tr>
    </table>
    BTW: Verwende für alle Tabellenformatierungen besser CSS, also kein align, border usw.

    Comment


    • #3
      Funktioniert einwandfrei

      Hallo Thomas,

      Danke für die schnelle Lösung.
      Dein Code funktioniert einwandfrei.
      Entschuldige, dass ich den Eintrag ins falsche Forum gepostet habe.

      mfg

      Leo

      Comment

      Working...
      X