Zeilenumbrüche mit XSL(T)


#1
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!
 

deepthroat

Erfahrenes Mitglied
#2
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ß
 
#3
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.
 

Mario_W

Grünschnabel
#6
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.
 
#7
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!
 

Mario_W

Grünschnabel
#8
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.
 

Mario_W

Grünschnabel
#9
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.
 
#10
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
 

Neue Beiträge