[XmlTextWriter] Problem mit HTML-Entities

Klein0r

Erfahrenes Mitglied
Hallo zusammen,

ich habe über die suche zwar viel zum XmlTextWriter gefunden, aber nichts zu meinem Problem!

Folgendes:
Ich erzeuge anhang von Datenbankabfragen ein XSLT-File welches später beim parsen mit Daten gefüllt wird. Mein Programm dient also nur zu vereinfachten Erstellung der XSLT-Dateien.

Nun möchte ich, dass der spätere XSLT-Parser an Stelle X einen Zeilenumbruch einfügt. Bisher habe ich das per Hand in die Datei geschrieben:
Code:
<xsl:text>
</xsl:text>

Das hat auch prima funktioniert. Allerdings steht ich nun vor dem Problem, dass wenn ich diese Zeile mit dem XmlTextWriter schreibe, er mir das & in &amp; wandelt. Das ist doch aber Schwachsinn weil es eigentlich ja schon ein HTML-Entity ist.

Hier der Code:
Code:
XMLobj.WriteStartElement("xsl:text")
XMLobj.WriteString("
")
XMLobj.WriteEndElement() ' xsl:text

Ergebnis in der erstellten XSLT-Datei ist folgendes (nochmal zur Verdeutlichung):
Code:
<xsl:text>&amp;#x0D;&amp;#x0A;</xsl:text>

Wie kann ich verhinden das dieser Effekt auftritt

lg
 
Hallo zusammen,

ich habe über die suche zwar viel zum XmlTextWriter gefunden, aber nichts zu meinem Problem!

Folgendes:
Ich erzeuge anhang von Datenbankabfragen ein XSLT-File welches später beim parsen mit Daten gefüllt wird. Mein Programm dient also nur zu vereinfachten Erstellung der XSLT-Dateien.

Nun möchte ich, dass der spätere XSLT-Parser an Stelle X einen Zeilenumbruch einfügt. Bisher habe ich das per Hand in die Datei geschrieben:
Code:
<xsl:text>
</xsl:text>

Das hat auch prima funktioniert. Allerdings steht ich nun vor dem Problem, dass wenn ich diese Zeile mit dem XmlTextWriter schreibe, er mir das & in &amp; wandelt. Das ist doch aber Schwachsinn weil es eigentlich ja schon ein HTML-Entity ist.
Das weiß der XmlTextWriter doch nicht. ;)

Gib einfach direkt ein CRLF aus.

Gruß
 
Das weiß der XmlTextWriter doch nicht. ;)

Gib einfach direkt ein CRLF aus.

Gruß

Na gute Idee - aber haut nich hin. Dann schreib er den LineFeed nich so dahin sondern direkt den Umbruch.
(Also eigentlich schreibt er ihn schon - aber für meine Verwendung falsch)

Ergebnis in der XSLT:
Code:
        <xsl:text>
</xsl:text>

Gewünschtes Ergebnis bleibt weiterhin:
Code:
<xsl:text>
</xsl:text>

Es geht ja darum, dass er keinen Umbruch machen soll, sondern ledeglich die HTML entities dafür schreiben soll, damit nach dem parsen der XSLT-Datei an der Stelle der Zeilenumbruch entsteht.

Versucht habe ich es mit:
Code:
XMLobj.WriteString(Environment.NewLine)

Folgende Varianten gehen auch nicht - selbes Ergebnis
Code:
XMLobj.WriteChars("
".ToCharArray, 0, "
".Length)
Code:
XMLobj.WriteWhitespace(Environment.NewLine)
Code:
XMLobj.WriteValue("
")

Auf weitere Lösungsvorschläge bin ich gespannt!
Dafür muss es doch eine Lösung geben...

Ich glaube ich liege mit folgender Variante garnich so falsch:
Allerdings wird das ganze als "ungültiges Namenszeichen" abgestempelt.
Code:
XMLobj.WriteEntityRef(Environment.NewLine)

lg
 
Zuletzt bearbeitet:
Gewünschtes Ergebnis bleibt weiterhin:
Code:
<xsl:text>
</xsl:text>

Es geht ja darum, dass er keinen Umbruch machen soll, sondern ledeglich die HTML entities dafür schreiben soll, damit nach dem parsen der XSLT-Datei an der Stelle der Zeilenumbruch entsteht.
Es ist eigentlich herzlich egal ob dort die Zeichen direkt oder nur die Zeichenentitäten stehen. Beim Parsen werden die Entitäten in die Zeichen umgewandelt so das das Resultat das Gleiche sein dürfte.

Gruß
 
Es ist eigentlich herzlich egal ob dort die Zeichen direkt oder nur die Zeichenentitäten stehen. Beim Parsen werden die Entitäten in die Zeichen umgewandelt so das das Resultat das Gleiche sein dürfte.

Gruß

Mh noch nicht getestet - allerdings sieht es sehr unschön aus (zerhackt die XML-Formatierung total).

Deswegen hätte ich gern was anderes.
Habe meinen zweiten Beitrag noch etwas erweitert - eventuell haste da nen tip?

lg
 
sollte nicht.

Ich versteh nur nicht, was du so richtig vor hast.
Xsl-Transformation dient dazu aus einem Xml uns einem Xsl-File eine neue Datei zu generieren. Mir scheint aber eher, dass du deine Daten schon komplett in das Xsl-File schreibst, die jedoch in die Xml-Datei gehören

Besser wäre es eigentlich, wenn du das Stylesheet (xsl) fest lässt und die Daten in eine Xml-Datei schreibst

bzgl CDATA:
http://de.wikipedia.org/wiki/XSL_Transformation#Text_unver.C3.A4ndert_ausgeben
 
Besser wäre es eigentlich, wenn du das Stylesheet (xsl) fest lässt und die Daten in eine Xml-Datei schreibst

Hi,

natürlich mache ich das auch so :) Die XSLT beschreibt ledeglich die Tabellenstruktur der mySQL-Datenbank-Tabelle. Und für jede Tabelle will ich so eine XSLT-Datei erstellen mit der ich aus nem Query ne einfache CSV machen kann.

Weiß nicht obs dafür gedacht ist - aber es funktioniert.
Ist ja auch nicht mein Konzept...

Werde es morgen mit dem CDATA Probieren.
Glaube aber irgendwie gerade nich das der Zeilenumbruch dann richtig in der daraus erstellten CSV auftaucht.

lg
 

Neue Beiträge

Zurück