Thomas J.S.: xsl:apply templates klappt nicht

Beitrag lesen

Hallo,

danke für Deine Hilfe.
Ja ich kann mich erinnern, dass Du mal copy-of empfohlen hast, statt value-of. Ich glaub, durch die ganze Probiererei ist mir das wieder entfallen.

Ich füge jetzt mal die lauffähige xsl ein. Immerhin werden mir die html-Tags jetzt in der transformierten xml, sprich in der html angezeigt. Wie aber wende ich darauf die templates an?
Und was bedeutet das child::node()?

Dass nur die Kind-Knoten vom <top> kopiert werden, weil ...

Denn soweit geht das ja auch ohne.

... du in diesem Fall auch das entsprchende <top>-Element kopierst, d.h. im HTML hast du es dann auch drinn.

Ach ja, manche Formatierschritte, die mit CSS gemacht werden sollten sind nur dämliche Beispiele, weil das Problem eigentlich bei einer fo-Transformation besteht, die ist nur zu komplex, für das kleine Problem.
Also, hier der nächste Anlauf und vielen Dank schonmal und nochmal :-) :

<xsl:for-each select="/root/toc/top">
     <!-- hier ist eigentlich noch ein xsl:sort -->
     <!-- Das mache ich hier so, damit die Reihenfolge der Daten mit dem TOC
korreliert-->
     <xsl:variable name="id" select="@id" />
<p>
       <!-- <xsl:value-of select="/root/data/top[@id=$id]" /> -->
  <xsl:copy-of select="/root/data/top[@id=$id]" />
       <!-- offensichtlich wird das match-div-template garnicht erreicht, welches unten definiert ist,
   muss ich hier apply-templates einbauen und wenn ja, wie?  -->
</p>

Deshalb habe ich gesagt, dass diese Formatirung über CSS erfolgen soll. Wenn du apply-templates verwenden möchtest, muss du für die HTML-Elemente entsprechende Templates schreiben und auf copy-of verzichten.

Also:

<xsl:template match="div">
 ...
</xsl:template>
<xsl:template match="ul">
 <ul>
   <xsl:for-each select="li">
     <li>
        <xsl:apply-templates />
...
</xsl:template>

etc.

Grüße
Thomas