PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : XML - Zeilenumbruch innerhalb eines Elementes


Durcairion
2007-09-10, 16:17:44
Hi,

Ich habe ein kleines Problem. Und zwar habe ich ein Programm, welches mir eine XML Datei erstellt. Dort gibt es nun ein Element, welches eine Message enthaelt die ueber mehrere Zeilen geht. D.h. es sind Zeilenumbrueche vorhanden.

Wenn ich zu der XML Datei nun jedoch eine CSS File schreibe, und dann die XML Datei im Browser anzeigen lasse, sind die Zeilenumbrueche wieder weg.

Das Element sieht wie folgt im XML Dokument aus:


<message>Description:
This is a message
Status: send
Date: 10.09.2007
Time: 15:37:45
</message>


Im Browser wird es dann wie folgt dargestellt:

Description: This is a message Status: send Date: 10.09.2007 Time: 15:37:45


Gibt es eine Moeglichkeit, die Zeilenumbrueche darzustellen? Ich habe schon versucht bei der Erzeugung der File "\n" durch z.B. <br/>, &lt;br/&gt; oder
zu ersetzen, fuehrte aber alles zu keinem Erfolg.

Gibt es hier wirklich keine Moeglichkeit dieses Element mit den Umbruechen wiederzugeben?

Vielen Dank im Voraus,
soucy

Gast
2007-09-10, 16:39:41
in (x)html würde man den text zwischen <pre></pre> einschließen.

Besserwissend
2007-09-10, 21:00:53
Gibt es eine Moeglichkeit, die Zeilenumbrueche darzustellen? Ich habe schon versucht bei der Erzeugung der File "\n" durch z.B. <br/>, &lt;br/&gt; oder
zu ersetzen, fuehrte aber alles zu keinem Erfolg.

Gibt es hier wirklich keine Moeglichkeit dieses Element mit den Umbruechen wiederzugeben?


XML Dateien im Browser "darstellen" (XHTML ausgenommen) geht nur über die Transformation mit XSL

z.B. so
Datei test.xslt:


<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html><head></head><body>
<pre>
<xsl:value-of select="." />
</pre>
</body></html>
</xsl:template>

</xsl:stylesheet>


Datei test.xml:

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="test.xslt" ?>
<message>Description:
This is a message
Status: send
Date: 10.09.2007
Time: 15:37:45
</message>


Wenn Du jetzt Deinen Browser mit der .xml-Datei aufrufst sollte das gewünschte Ergebnis (also Ausgabe mit Zeilenumbrüchen) dastehen.
PS:
Insbesondere bei der Verarbeitung von XML-Dateien ist XSLT eine tolle Sache, nicht nur zum Generieren von HTML-Seiten.
Wenn Du oft mit XML zu tun hast ist XSLT vielleicht einen Blick wert.

Gast
2007-09-10, 21:05:33
Wäre es so nicht besser?:

<message Description="This is a message"
Status="send"
Date="10.09.2007"
Time="15:37:45">

Hier die eigentliche Message

</message>

Durcairion
2007-09-11, 08:33:21
Leider wird auch mit XSLT der Inhalt der Message Zeile hintereinander ausgegeben :/

govou
2007-09-11, 10:09:12
@Gast:
So würde ich das machen, sieht mir "wohl geformter" aus und dürfte sogar das Zeilenumbruchproblem lösen.


<message>
<description>This is a message</description>
<status>send</status>
<date>10.09.2007</date>
<time>15:37:45</time>
<body>Hier die eigentliche Message</body>
</message>

Durcairion
2007-09-11, 10:32:45
@Gast:
So würde ich das machen, sieht mir "wohl geformter" aus und dürfte sogar das Zeilenumbruchproblem lösen.


<message>
<description>This is a message</description>
<status>send</status>
<date>10.09.2007</date>
<time>15:37:45</time>
<body>Hier die eigentliche Message</body>
</message>


Waere jede Message gleich aufgebaut, wuerde das ja kein Problem darstellen.

Die Messages stammen jedoch aus einer Logfile und haben unterschiedlichen Inhalt & Laenge.

Das oben beschriebene war nur ein kleines Beispiel um das Problem darzustellen.

Besserwissend
2007-09-11, 10:37:22
Leider wird auch mit XSLT der Inhalt der Message Zeile hintereinander ausgegeben :/
Hmmm, dann gibt es mehrere Möglichkeiten:
1. Falsches "character encoding": ich hab im Beispiel encoding="iso-8859-1" angegeben, probier mal UTF8 statt iso-8859-1
2. hinter jede Zeile in <message> ein &#10; setzen
3. Browser unterstützt kein xslt, vielleicht hilft ein Update des Browsers

Durcairion
2007-09-11, 10:48:33
Ich nutze UTF-8 da mit ISO direkt eine Fehlermeldung der Browser kommt, das der Inhalt nicht dargestellt werden koennte.

Escape Sequences habe ich schon alle durchprobiert. Nichts fuehrt mich zum gewuenschten Ergebnis.

Browser habe ich nun IE7, Firefox und Opera jeweils in der neuesten Version getestet und nichts hat geholfen.

darph
2007-09-11, 11:20:38
Waere jede Message gleich aufgebaut, wuerde das ja kein Problem darstellen.
Du kannst Dokumente so definieren, daß nicht immer alle Tags gesetzt sein müssen.

Durcairion
2007-09-11, 11:30:38
Du kannst Dokumente so definieren, daß nicht immer alle Tags gesetzt sein müssen.

Und woher sollte ich im Voraus wissen wieviel Zeilen die laengste Fehlermeldung in der Log umfasst ? :)

Durcairion
2007-09-11, 13:12:27
Ich habe es geschafft. Und zwar habe ich die Ausgabe der Message mittels XSLT einfach in ein <pre> </pre> HTML Code gesetzt wodurch der urspruengliche Text nicht veraendert wird bzw. die Formatierung nicht veraendert wird.

Gast
2007-09-11, 14:30:38
Ich habe es geschafft. Und zwar habe ich die Ausgabe der Message mittels XSLT einfach in ein <pre> </pre> HTML Code gesetzt wodurch der urspruengliche Text nicht veraendert wird bzw. die Formatierung nicht veraendert wird.
Das wurde doch oben bereits von jemandem vorgeschlagen?