Zum neuen Informatik-Forum >>
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

XSL:FO Block zusammenhalten

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> XML/XSD/XSL/XSLT
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Enno
Gast





BeitragVerfasst am: 18. Nov 2005 18:08    Titel: XSL:FO Block zusammenhalten Antworten mit Zitat

Hallo!

Für eine Praktische Hausarbeit möchte ich aus einer Datenbank eine druckbare
pdf-Datei erzeugen. Dies mache ich über Xsl:fo und fop.
Nun habe ich das Problem, daß mir die einzelnen Blöcke der Abfrage
aneinandergereiht werden, ohne dass Rücksicht auf die Formatierung genommen
wird. Soll heißen: Der Text eines Datenbankeintrages soll zusammen mit einem
evtl. Bild und einem Abstand auf der Seite gehalten werden, auf der er beginnt.
Ist nicht genug Platz, soll eine neue Seite angefangen werden. Wie schaffe ich
es, dass die Blöcke zusammenbleiben?
Danke hier schonmal für die Hilfe.

Enno

PS: Hier als Hilfe der Quelltext:
Code:

<?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"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">

<xsl:template match="/">
<xsl:apply-templates select="questionaire" />
</xsl:template>

<xsl:template match="questionaire">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="questionairePage"
margin-top="0.5in"
margin-right="0.5in">
<fo:region-body margin="0.5in"/>
<fo:region-before extent="0.5in"/>
</fo:simple-page-master>
</fo:layout-master-set>

<fo:page-sequence master-reference="questionairePage">
<fo:static-content flow-name="xsl-region-before">
<fo:block font-family="sans-serif" font-size="12pt" padding-behind="1cm"
padding-bottom="1cm" text-align="right">
Name:_____________________________
</fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<xsl:apply-templates select="category" />
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>

<xsl:template match="category">
<fo:block font-family="sans-serif" font-size="12pt" padding-before="1cm"
padding-bottom="0.5cm" text-align="left">
<xsl:value-of select="@caption" />
</fo:block>
<xsl:apply-templates select="question" />
</xsl:template>


!Dieser Teil soll auf einer Seite zusammengehalten werden:

Code:

<xsl:template match="question">
<!--fo:block font-family="Times" font-size="12pt" text-align="left"
font-weight="bold" padding-before="0.25cm" padding-left="0.25cm">
Frage (<xsl:value-of select="points" /> Punkte)
</fo:block> -->
<fo:block keep-together.within-page="always" font-family="sans-serif"
font-size="10pt" text-align="justify" font-weight="normal" padding-left="0.25cm">
<xsl:value-of select="text" />
</fo:block>
<xsl:if test="picture">
<fo:block>
<fo:external-graphic>
<xsl:attribute name="src"><xsl:value-of select="picture/@src" /></xsl:attribute>
</fo:external-graphic>
</fo:block>
</xsl:if>
<fo:block padding="2cm" />
</xsl:template>

</xsl:stylesheet>
[/code][/quote]
Nach oben
kurellajunior
Administrator


Anmeldungsdatum: 14.02.2005
Beiträge: 214
Wohnort: Berlin-Pankow

BeitragVerfasst am: 18. Nov 2005 20:24    Titel: Antworten mit Zitat

Ich habe mit fo nur am Rande gearbeitet, ber mir scheint als wenn Du drei separate Blöxke hättest, wie soll er da wissen, dass er die zusammenhalten soll? Müssten die nicht alle in einen Block :kratz:

Mmh, mehr fällt mir nicht wirklich ein, ich behalts im Hinterkopf...

Jan

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Enno
Gast





BeitragVerfasst am: 20. Nov 2005 12:35    Titel: Antworten mit Zitat

Habe ich schon mal probiert, indem ich einen großen Block drum herum definiert habe.
Das Problem dahei ist aber, daß fo diese Methode anscheinend garnich mag und mir daher keine Ausgabe erstellt. Es wird also vorher eine XMl-Datei geschrieben, diese aber nicht umgewandelt. Habe es auch schon mit einem Span probiert-gleiche Probl...

Die Fkt. "keep-with-next" funzt leider nur bei Tabellen... grübelnd

Enno
Nach oben
kurellajunior
Administrator


Anmeldungsdatum: 14.02.2005
Beiträge: 214
Wohnort: Berlin-Pankow

BeitragVerfasst am: 20. Nov 2005 19:19    Titel: Antworten mit Zitat

Nach Lektüre scheint dies auch hier wie bei HTML der einzige Weg zu sein. Eine einspaltige, einzeilige Tabelle drumherum mit Rahmen 0 und Außen- und Innenabstand auch 0.

Nicht schön aber sicherlich funktionierend... Und selbst wenn es eine andere Implementierung gäbe würde sie im Prinzip ebenfalls so funktionieren Augenzwinkern

Jan

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> XML/XSD/XSL/XSLT Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen