Der Martin: XML bruch

Beitrag lesen

Moin,

weiss jemand wie man in XML einen Bruch (in HTML <br />) darstellt. Ich kenne mich mit XML nicht aus und im Netz konnte ich auch keine Lösung für mein Problem finden.

ich glaube, du bist einem Missverständnis aufgesessen. XML ist nicht HTML. XML ist eine Markup-Sprache zur Beschreibung von Daten und Datenstrukturen, nicht unbedingt zur Anzeige. Wie reines XML angezeigt wird, ist nicht festgelegt.
Und du darfst nicht erwarten, dass ein <br /> in XML irgendwas bewirken würde - es ist ein beliebiges Element wie jedes andere auch. XML verbindet damit nicht wie HTML die Bedeutung "Zeilenumbruch".

Wenn du also Textfragmente gezielt unterteilen willst (z.B. weil es bei der Anzeige nachher einzelne Zeilen sein sollen), dann müsstest du sie in separate Elemente verpacken.

<?xml version="1.0" encoding="utf-8"?>
  <myxml>
    <record>
        <![CDATA[
        Line 1 <br />
        Line 2 <br />
        Line 3 <br />
        ]]>
    </record>
</myxml>

Hier kommt im Browser aber alles in eine Zeile und die <br /> hat er auch gezeit.

Natürlich. Indem du den Block als CDATA auszeichnest, weist du den XML-Parser an, innerhalb dieses Blockes keine weiteren Tags zu interpretieren, sondern alles, was kommt, als reinen Text zu behandeln.

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="tiramisu.xsl"?>
  <myxml>
    <record>
        Line 1 <lb>
        Line 2 <lb>
        Line 3 <lb>
    </record>
</myxml>

Das ist invalides XML: Du öffnest dreimal ein lb-Element, schließt es aber nie wieder. Aber der Weg ist schon gut. Denke ihn konsequent zu Ende! Warum nicht einfach so:

<?xml version="1.0" encoding="utf-8"?>
  <myxml>
    <record>
        <line>Line 1</line>
        <line>Line 2</line>
        <line>Line 3</line>
    </record>
</myxml>

So hast du das, was nachher Zeilen sein sollen, schonmal entsprechend strukturiert. Und jetzt kannst du das per XSL aufbereiten. Bei dem Thema bin ich aber raus, damit habe ich mich im Detail noch nie befasst.

Schöne Eiertage,
 Martin