Announcement

Collapse
No announcement yet.

Geschachtelte Elemente ausgeben

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

  • Geschachtelte Elemente ausgeben

    Hallo Allerseits,

    bin neu hier aufgrund der Tatsache, dass ich ein kleines Problem habe:
    Ich habe folgendes XML Konstrukt:
    Code:
    <week>
      <weekday datum="01.01.2008">
        <tageseintrag start="8:00" ende="10:00" />
        <tageseintrag start="10:00" ende="19:00" />
      </weekday>
      <weekday datum="02.01.2008">
        <tageseintrag start="8:00" ende="16:00" />
      </weekday>
    </week>

    Diese XML Datei möchte ich als HTML in der folgenden Form anzeigen:

    HTML Code:
    <table>
    <tr>
    <td>01.01.2008</td>
    <td>
      <table>
        <tr><td>8:00 - 10:00</td></tr>
        <tr><td>10:00 - 19:00</td></tr>
      </table>
    </td>
    </tr>
    <tr>
    <td>01.01.2008</td>
    <td>
      <table>
        <tr><td>8:00 - 16:00</td></tr>
      </table>
    </td>
    </tr>
    </table>
    Dazu habe ich mir folgendes XSL ausgedacht: (was erklärbarerweise nicht funktioniert):

    Code:
    ...
    <xsl:template match="/week">
    ...
      <xsl:for-each select="/week/weekday">
        ... (entsprechende Tabellen- HTML- Tags sind vorhanden)
        <xsl:value-of select="@datum"/>
        ...
        <xsl:for-each select="/week/weekday/tageseintrag">
          <xsl:value-of select="@start"/> - <xsl:value-of select="@ende"/>
        </xsl:for-each>
      </xsl:for-each>
    ...
    </xsl:template>
    Problem hierbei ist, dass er für jeden Tag, alle Tageseinträge anzeigt, nicht nur die zum Tag gehörenden. Wie kann ich angeben, dass er nur die Tageseinträge für den aktuellen Tag anzeigt, nicht die zu einem anderen Tag gehörenden?

    Danke für Eure Mühen,

    Jens

  • #2
    Versuche das Problem strukturierter anzugehen. xsl:for-each würde ich gerade am Anfang eher vermeiden:

    Code:
    <xsl:template match="week">
      <table>
        <xsl:apply-templates select="weekday"/>
      </table>
    </xsl:template>
    
    <xsl:template match="weekday">
      <tr>
        <td><xsl:value-of select="@datum"/></td>
        <td><table>
          <xsl:apply-templates select="tageseintrag"/>
        </table></td>
      </tr>
    </xsl:template>
    
    <xsl:template match="tageseintrag">
      <tr><td><xsl:value-of select="@start"/> - <xsl:value-of select="@ende"/></td></tr>
    </xsl:template>

    Comment


    • #3
      Jo,

      vielen Dank, das funktioniert wie geschmiert. So wollte ich es haben :-)

      Comment

      Working...
      X