DataStream: XML bruch

Hallo,

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 habe folgendes versucht:

<?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. Dann habe ich das probiert:

<?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>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
		version="1.0">
		
	<xsl:template match="lb">
	     <br />
	</xsl:template>
</xsl:stylesheet>

Alles das hat mir nicht geholfen. Weisst jmd, wie das funktioniert?

Grüße

  1. Lieber DataStream,

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

    das liegt am Markup, welches im Browser ankommt. Soll der Browser Deinen XML-Code direkt anzeigen? Wandelst Du den XML-Code vorher durch irgendeine Transformation in HTML um? Wie genau(!) sieht dieses erzeugte HTML aus?

    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    		version="1.0">
    		
    	<xsl:template match="lb">
    	     <br />
    	</xsl:template>
    </xsl:stylesheet>
    

    Alles das hat mir nicht geholfen. Weisst jmd, wie das funktioniert?

    Dieses Dein "hat mir nicht geholfen" sagt mir als Problembeschreibung nichts. Da ich noch nie XSLT gemacht habe, weiß ich nicht, welches Ergebnis Dein Code bei Dir erzeugt hat. Schreib doch bitte genauer, was Dein Ergebnis war und was Du stattdessen gerne gehabt hättest! Vielleicht ist XSLT nicht die Lösung für Dein Problem...?

    Liebe Grüße,

    Felix Riesterer.

    1. Hallo, vielen dank für dein Antwort.

      Soll der Browser Deinen XML-Code direkt anzeigen?

      Also ich hätte gerne das Ergebnis ohne <br/> sehen. Siehe Bild.Bildbeschreibung

      Wandelst Du den XML-Code vorher durch irgendeine Transformation in HTML um? Wie genau(!) sieht dieses erzeugte HTML aus?

      Also wie gesagt ich kenne mich nicht aus und habe nur im Netz gefunden, dass einen Transformation (einen xsl Datei) nötig ist, damit man keine Tags im Browser Fenster zu sehen sind.

      Jeder Satz in neue Zeile. Hinter jede Zeile habe ich <br/> Vielleicht brauche ich XSLT gar nicht, weiß ich selber nicht. Ich will nur im Browser richtige Ausgabe ohne dass er mir <br/> Tag zeigt.

      Grüße & Frohe Ostern an alle im Forum

  2. 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

    1. Hallo, vielen Dank für das Antwort.

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

      Und jetzt kannst du das per XSL aufbereiten.

      Ja, das ist ja auch mein Problem. Ich weiß es nicht wie ich xsl definieren muss, damit ich im Browser nur 3 Zeilen sehen kann: Line1,2,3 alle untereinander, ohne Tags im Browserfenster. Kann mir jmd helfen?

      Grüße

      1. Hallo DataStream,

        Und jetzt kannst du das per XSL aufbereiten. Ja, das ist ja auch mein Problem. Ich weiß es nicht wie ich xsl definieren muss, damit ich im Browser nur 3 Zeilen sehen kann: Line1,2,3 alle untereinander, ohne Tags im Browserfenster. Kann mir jmd helfen?

        Probiere diesen Ansatz, Ausgabe als Absätze, eine Liste wäre auch sinnvoll:

        <?xml version="1.0" encoding="UTF-8"?>
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
          <xsl:output method="html" encoding="UTF-8"/>
        
          <xsl:template match="myxml">
            <html>
              <head>
                <title>Test</title>
              </head>
              <body>
                <h1>Ausgabe</h1>
                <xsl:apply-templates select="record"/>
              </body>
            </html>
          </xsl:template>
          
          <xsl:template match="record">
            <xsl:for-each select="line">
              <p><xsl:value-of select="."/></p>
            </xsl:for-each>
          </xsl:template>
          
        </xsl:stylesheet>
        

        Einbindung von test.xsl ins XML-Dokument:

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

        Grüße, Thomas