Thomas J.S.: Tabelle umwandeln

Beitrag lesen

Hallo,

Also mir liegt eine Tabelle vor, die XHTML konform ist (ich kann sie aber auch als OpenXML darstellen, das Problem bleibt das Gleiche). In der Tabelle gibt es mehrere Überschriften, die gekennzeichnet sind mit einem 'h' in der zweiten Zelle der Tabellenreihe. Darunter liegen dann die Datenreihen mit einer Elementbezeichnung und den Werten für die jeweiligen Perioden (die Periode steht in der Überschrift in der Spalte der Wertspalte). Die Perioden sind aber nicht in jeder Überschrift gleich. Ich moechte nun mit xsl eine umwandlung, dass ich dann in der neuen XML ein Element habe, welches die Bezeichnung trägt, den Wert sowie die entsprechende Periode. Klingt kompliziert, ist aber etwas anschaulicher mit Beispiel, deshalb anbei die XHTMl Datei.

Als Ergbnis moechte ich nun alle Element ohne Überschrift beispielhaft haben:

Meine Hauptfragen wäre, mit welcher XPATH Abfrage komme ich von der aktuellen Tabellenreihe in die entsprechend übergeordnete Reihe mit der Überschrift, um mir die Periode zu besorgen, sowie den Währungstype, der auch in der Überschrift steht?

So in etwa könnte ich mir das Vorstellen:

  
   <xsl:for-each select="tr[td[2][. != 'h']]]">  
     <xsl:element name="{td[4]}">  
    <xsl:attribut name="{preceding-sibling::tr[td[2][. = 'h']]]/td[5]}">  
    <!-- oder <xsl:attribut name="balance">  etc. -->  
     <xsl:value-of select="td[5]" />  
   </xsl:attribute>  
   ....  
    </xsl:element>  
   </xsl:for-each>  

Und dann muesste ich ja auch noch eine Art Schleife ziehen, um alle vorhanden Perioden abzufragen (wobei alle Perioden, die möglich sind, in einem knoten liegen unter time/periode/@periodevalue). Wie gesagt, vielleicht hat ja einer so etwas schon gemacht oder weiss einen Link hierfür.

Dazu kann ich insofern nichts sagen, da ich nicht die Beduetung von "Periode" kenne. Aber du kannst innerhalb des xsl:element eine Abfrage machen und @periode nur dann erzeugen, wenn es in der Tabelle existiert.
(was eigentlich nicht schlecht wäre, denn die Tabelle ist keineswegs korrekt, wenn darin einfach Zellen fehlen.)

Grüße
Thomas