E-Book Startseite Karteikarten-Programm
0
Inhalt dieser Seite
  1. fo:block
  2. fo:inline
  3. fo:block-container

fo:block

Innenabstand Wichtige Elemente in XSL-FO sind block und inline. fo:block ist vergleichbar mit dem HTML-Element div. Bei fo:block handelt es sich um ein blockförmiges bzw. rechteckiges Element. Die Größe der block-Elemente lässt sich nicht direkt beeinflussen, d. h. es gibt hier kein width- oder height-Attribut. Um den Aufbau von margin, border, padding und dem eigentlichen Element zu verstehen, schauen wir uns nochmals das CSS-Box-Model an. Dazu später mehr! Innerhalb von fo:block können so ziemlich alle Attribute verwendet werden. Wir haben in unserem Code verschiedene Attribute verwendet, im Laufe des XSL-Kurses werden diese dann auch ausführlicher erklärt. Auch auf das Box-Model gehen wir später nochmals genauer ein.

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<?xml-stylesheet href="foblock.xsl" type="text/xsl"?>
 
<wurzel>Test<wurzel>
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
  <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
      <fo:simple-page-master master-name="seite" page-height="29.7cm" page-width="21cm" margin-top="1cm" margin-bottom="1cm" margin-left="1cm" margin-right="1cm">
        <fo:region-body margin-top="2.5cm" margin-bottom="2cm" margin-left="5.5cm" margin-right="1.5cm" />
        <fo:region-before region-name="top" extent="2cm" precedence="true" background-color="#FF0000" />
        <fo:region-after region-name="bottom" extent="1.5cm" precedence="true" background-color="#00FFFF" />
        <fo:region-start region-name="left" extent="5cm" background-color="#FFFF00" />
        <fo:region-end region-name="right" extent="1cm" background-color="#0000FF" />
      </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="seite">
      <fo:static-content flow-name="top">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:static-content flow-name="left">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:static-content flow-name="right">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:static-content flow-name="bottom">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:flow flow-name="xsl-region-body">
        <fo:block><xsl:value-of select="." /></fo:block>
        <fo:block background-color="#FF55FF" border-left-color="#000000" border-left-style="solid" border-left-width="12px">Test 2</fo:block>
        <fo:block background-color="#55FFAA" border-color="#808000" border-style="dotted" border-width="3px">Test 3</fo:block>
        <fo:block background-color="#7F55FF" padding="5px">Test 4</fo:block>
      </fo:flow>
    </fo:page-sequence>
  </fo:root>
</xsl:template>
</xsl:stylesheet>
Anzeigebeispiel
Anzeigebeispiel (XML-Datei)



Anzeigebeispiel
Anzeigebeispiel (PDF-Datei)



fo:inline

Ein weiteres wichtiges Element ist fo:inline, welches in HTML mit span vergleichbar ist. Hier gibt es jedoch noch etwas sehr wichtiges zu beachten. fo:inline muss immer innerhalb von fo:block vorkommen, deshalb wird es auch oft nur als Art Textmarker genutzt. In unserem Beispiel haben wir den Satz "Hallo, mein Name ist Max Mustermann und ich bin 29 Jahre alt!" eingebaut. Dort wird dann mit fo:inline der Name Max Mustermann und 29 mit bestimmten Formatierungen hervorgehoben. In fo:inline können fast alle Attribute verwendet werden, die in fo:block verwendet werden dürfen. Eine Ausnahme liegt bei den verschiedenen margin-Attributen, welche nicht erlaubt sind.

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<?xml-stylesheet href="foinline.xsl" type="text/xsl"?>
 
<wurzel>Test<wurzel>
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
  <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
      <fo:simple-page-master master-name="seite" page-height="29.7cm" page-width="21cm" margin-top="1cm" margin-bottom="1cm" margin-left="1cm" margin-right="1cm">
        <fo:region-body margin-top="2.5cm" margin-bottom="2cm" margin-left="5.5cm" margin-right="1.5cm" />
        <fo:region-before region-name="top" extent="2cm" precedence="true" background-color="#FF0000" />
        <fo:region-after region-name="bottom" extent="1.5cm" precedence="true" background-color="#00FFFF" />
        <fo:region-start region-name="left" extent="5cm" background-color="#FFFF00" />
        <fo:region-end region-name="right" extent="1cm" background-color="#0000FF" />
      </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="seite">
      <fo:static-content flow-name="top">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:static-content flow-name="left">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:static-content flow-name="right">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:static-content flow-name="bottom">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:flow flow-name="xsl-region-body">
        <fo:block><xsl:value-of select="." /></fo:block>
        <fo:block>
          Hallo, mein Name ist
          <fo:inline background-color="#FF00FF" color="#00FF00" font-weight="bold">Max Mustermann
           </fo:inline>
          und ich bin
          <fo:inline background-color="#FF00FF" color="#00FF00" font-weight="bold">29</fo:inline>
          Jahre alt!
        </fo:block>
      </fo:flow>
    </fo:page-sequence>
  </fo:root>
</xsl:template>
</xsl:stylesheet>
Anzeigebeispiel
Anzeigebeispiel (XML-Datei)



Anzeigebeispiel
Anzeigebeispiel (PDF-Datei)



fo:block-container

Im Block "fo:block" haben wir bereits angesprochen, dass man in diesen Elementen kein width- und / oder height-Attribut verwenden kann. Um die Größe eines Blocks zu bestimmten muss man einen sogenannten Block-Container erstellen. Dafür brauchen wir das Element fo:block-container. In fo:block-container können alle Attribute eingesetzt werden, welche in fo:block gültig sind. Zusätzlich dazu kann man in fo:block-container die width- und / oder height-Attribute einsetzen. Hier ein kleines Beispiel:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<?xml-stylesheet href="foblockcontainer.xsl" type="text/xsl"?>
 
<wurzel>Test<wurzel>
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
  <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
      <fo:simple-page-master master-name="seite" page-height="29.7cm" page-width="21cm" margin-top="1cm" margin-bottom="1cm" margin-left="1cm" margin-right="1cm">
        <fo:region-body margin-top="2.5cm" margin-bottom="2cm" margin-left="5.5cm" margin-right="1.5cm" />
        <fo:region-before region-name="top" extent="2cm" precedence="true" background-color="#FF0000" />
        <fo:region-after region-name="bottom" extent="1.5cm" precedence="true" background-color="#00FFFF" />
        <fo:region-start region-name="left" extent="5cm" background-color="#FFFF00" />
        <fo:region-end region-name="right" extent="1cm" background-color="#0000FF" />
      </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="seite">
      <fo:static-content flow-name="top">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:static-content flow-name="left">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:static-content flow-name="right">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:static-content flow-name="bottom">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:flow flow-name="xsl-region-body">
        <fo:block><xsl:value-of select="." /></fo:block>
        <fo:block-container>
          <fo:block>Dies ist ein Text. Dies ist ein Text. Dies ist ein Text. Dies ist ein Text. Dies ist ein Text. 
          Dies ist ein Text. Dies ist ein Text. Dies ist ein Text. Dies ist ein Text. Dies ist ein Text.</fo:block>
        </fo:block-container>
      </fo:flow>
    </fo:page-sequence>
  </fo:root>
</xsl:template>
</xsl:stylesheet>
Anzeigebeispiel
Anzeigebeispiel (XML-Datei)



Anzeigebeispiel
Anzeigebeispiel (PDF-Datei)



Design:
 


Logo
Benjamin Jung
Krummstr. 9/3
73054 Eislingen

E-Mail: info@homepage-webhilfe.de
Webseite: www.homepage-webhilfe.de