Thomas J.S.: Anfänger und die W3C Doku

Beitrag lesen

Hallo,

Nur stellt sich mir nun eine sicherlich nicht besonders komplexe Frage:

Wenn ich als W3C-Beispiel ein

<xsl:template match="document">
  fo:block
    <fo:initial-property-set font-variant="small-caps"/>
    xsl:apply-templates/
  </fo:block>
</xsl:template>

angeboten bekomme hab ich bisher keine Ahnung wie ich diese tollen fo-Tags umsetzen soll.

wenn ich deinen unteren code ansehe, möchtest du eigentlich eine xml -> html transformation.

ausholt: hinter xsl verbergen sich 2 versch. standards: xslt und xsl (xsl-fo).

xsl (oder xsl-fo = xsl formating objects) ist für layoutformatierung von xml dokumenten, sie definiert layout-blöcke und andere layout-eigenschaften (farbe, schriftart etc.) für xml elemente. zur ziet wird xsl-fo in erster linie für xml -> pdf konvertierung verwendet.

<xsl:template match="document">
<H1><xsl:value-of select="//title"/></H1>
</xsl:template>
</xsl:stylesheet>

da ist vom prinzip ok, aber vom technik etwas schlecht:
mit //title selektierts du eigentlich alle <title> elemente im gesamten dokument. das geht wenn du nur ein <title> hast noch halbwegs gut, nicht desto trotz gehen solche selektierungen sehr zu lasten der performance.

wenn dein xml so aussieht:

<?xml version="1.0"?>
<document>
   <title>der titel</title>
</document>

kannst eine xslt dazu schreiben:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="/">
      <html>
         <head>
            <title><xsl:value-of select="title" /></title>
         </head>
         <body>
            xsl:apply-templates/
         </body>
      </html>
   </xsl:template>
   <xsl:template match="title">
      <h1><xsl:value-of select="." /></h1>
   </xsl:template>
</xsl:stylesheet>

und das würe eine html ergeben:

<html>
   <head>
      <title>der titel</title>
   </head>
   <body>
      <h1>der titel</h1>
   </body>
</html>

grüße
thomas