Zeilenumbrüche mit XSL(T)

Tawarien

Mitglied
Hallo.
Ich möchte eine XSL Transformation durchführen
und habe das Problem, dass keine Zeilenumbrüche übernommen werden.
Nun suche ich nach einem passenden Steuerzeichen, dass das für mich
erledigt. Leider haben alle bisher gefundenen (\n, <br> bzw </ br>, &lt;br> etc.)
nicht funktioniert bzw. sogar fehler produziert.

Da ich mir nur sehr ungern den Aufwand machen würde,
einen neuen Tag einzuführen, hoffe ich darauf, hier ein funktionierendes
Zeichen zu bekommen, falls es das gibt!

Danke schonmal!
 
Hallo.
Ich möchte eine XSL Transformation durchführen
und habe das Problem, dass keine Zeilenumbrüche übernommen werden.
Welche xsl:eek:utput Optionen hast du gesetzt?

Es gibt kein besonderes Zeichen für einen Zeilenumbruch. Grundsätzlich kann man Text mit <xsl:text> ausgeben.

Zeig deinen Code, am besten mit Beispiel- und Ergebnisdokument.

Gruß
 
Momentan sieht die entsprechende Stelle so aus

Code:
	<xsl:template match="infoText"> 
		<fo:table-row>
			<fo:table-cell padding="10pt">
				<fo:block text-align="justify" line-height="1.3">      
					<xsl:value-of select="." />
				</fo:block>
			</fo:table-cell>
		</fo:table-row>
	</xsl:template>

<xsl:value-of ...> setzt nun an die Stelle den Text, der in der XML zwischen den InfoText-Tags steht, klar.
Ich kann mir nicht vorstellen, dass es hier jetzt keine Möglichkeit gibt, eine Art Steuerzeichen für einen Zeilenumbruch einzufügen, gibt.
 
Hi.

wie schon gesagt:
XML:
<xsl:template match="infoText"> 
		<fo:table-row>
			<fo:table-cell padding="10pt">
				<fo:block text-align="justify" line-height="1.3">      
					<xsl:value-of select="." /><xsl:text>
</xsl:text>
				</fo:block>
			</fo:table-cell>
		</fo:table-row>
	</xsl:template>
Siehe http://xmlgraphics.apache.org/fop/fo.html#fo-preformat

Gruß
 
Zuletzt bearbeitet von einem Moderator:
Hallo

Das gleiche Problem habe ich zur zeit auch. Im table-header möchte ich einen Zeilenumbruch haben nur er schreibt bei mir den Text über die Ränder hinaus. Wie hast du das problem gelöst.
 
Ich weiß nicht, inwiefern meine Lösung im table-header funktioniert,
hatte das im table-body, aber ich habe in meinem XML-Aufbau, indem
der Text im Tag <text>...</text> stand noch <row>-Tags hinzugefügt.

Sprich das ganze sieht dann so aus:

Code:
.......
     <text>
          <row>.....</row>
          <row>.....</row>
          <row>.....</row>
     </text>
.........

Die XML-Datei erzeuge ich mir per Java und die Rows bekomme ich aus
dem Text, indem ich den String bei jedem '\n' splitte und in ein String[] speichere.

Ich hoffe, ich konnte etwas helfen,
Grüße!
 
Danke erst mal. Aber ist nicht ganz das was ich will. Ich möchte das automatisch in zeilenumbruch gemacht wird wenn die Spalte zu schmal ist.
 
OK habe den Fehler gefunden. Ich habe das Attribute "keep-together" auf "always" gesetzt. Da ich viele Tabellen habe und ich will das bestimmte Tabellen auf einer Seite bleiben, das hatte aber auch die Auswirkung auf die Tabellen-Zellen so das der Text über die Ränder geschrieben wird. Jetzt habe ich einfach in den Block für den Table-Header den Wert auf Auto gesetzt und nun macht er auch den Zeilenumbruch so wie er soll.
 
Man kann Zeilenumbrüche auch ganz einfach mit Hex-Codes für z. B. „Nächste Zeile" („&#x85;") erzeugen. Man schreibe diese einfach an die Stellen, an denen Zeilenumbrüche erzeugt werden sollen und erhält das gewollte Ergebnis. :)

Beispiel (XML-Datei):
- - - - -
<text>Dies ist ein&#x85;Zeilenumbruch.</text>
- - - - -
Ausgabe:
- - - - -
Dies ist ein
Zeilenumbruch.
- - - - -

Herzlichst
BerniFighter
 
Zurück