tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von deepthroat
ERLEDIGT
JA
ANTWORTEN
10
ZUGRIFFE
993
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Klein0r
    Klein0r Klein0r ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Ort
    Paderborn
    Beiträge
    718
    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 :
    1
    
    <xsl:text>&#x0D;&#x0A;</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 vbnet:
    1
    2
    3
    
    XMLobj.WriteStartElement("xsl:text")
    XMLobj.WriteString("&#x0D;&#x0A;")
    XMLobj.WriteEndElement() ' xsl:text

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

    Wie kann ich verhinden das dieser Effekt auftritt

    lg
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von Klein0r Beitrag anzeigen
    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 :
    1
    
    <xsl:text>&#x0D;&#x0A;</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ß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    Avatar von Klein0r
    Klein0r Klein0r ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Ort
    Paderborn
    Beiträge
    718
    Zitat Zitat von deepthroat Beitrag anzeigen
    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 :
    1
    2
    
            <xsl:text>
    </xsl:text>

    Gewünschtes Ergebnis bleibt weiterhin:
    Code :
    1
    
    <xsl:text>&#x0D;&#x0A;</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 vbnet:
    1
    
    XMLobj.WriteString(Environment.NewLine)

    Folgende Varianten gehen auch nicht - selbes Ergebnis
    Code vbnet:
    1
    
    XMLobj.WriteChars("&#x0D;&#x0A;".ToCharArray, 0, "&#x0D;&#x0A;".Length)
    Code vbnet:
    1
    
    XMLobj.WriteWhitespace(Environment.NewLine)
    Code vbnet:
    1
    
    XMLobj.WriteValue("&#x0D;&#x0A;")

    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 vbnet:
    1
    
    XMLobj.WriteEntityRef(Environment.NewLine)

    lg
    Geändert von Klein0r (05.02.09 um 15:17 Uhr)
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von Klein0r Beitrag anzeigen
    Gewünschtes Ergebnis bleibt weiterhin:
    Code :
    1
    
    <xsl:text>&#x0D;&#x0A;</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ß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    Avatar von Klein0r
    Klein0r Klein0r ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Ort
    Paderborn
    Beiträge
    718
    Zitat Zitat von deepthroat Beitrag anzeigen
    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
     

  6. #6
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von Klein0r Beitrag anzeigen
    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?
    Versuch mal die WriteCharEntity Methode.

    Gruß
    Klein0r bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  7. #7
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Hi

    Pack den Text, der Steuerzeichen enthält in eine CData-Section.
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  8. #8
    Avatar von Klein0r
    Klein0r Klein0r ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Ort
    Paderborn
    Beiträge
    718
    Zitat Zitat von Nico Graichen Beitrag anzeigen
    Hi

    Pack den Text, der Steuerzeichen enthält in eine CData-Section.
    Muss ich morgen mal versuchen. Aber wird das ganze dann auch sicher als Zeilenumbruch interpretiert wenn der XSLT Parser das liest?

    lg
     

  9. #9
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    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_Tra...ndert_ausgeben
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  10. #10
    Avatar von Klein0r
    Klein0r Klein0r ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Ort
    Paderborn
    Beiträge
    718
    Zitat Zitat von Nico Graichen Beitrag anzeigen
    Besser wäre es eigentlich, wenn du das Stylesheet (xsl) fest lässt und die Daten in eine Xml-Datei schreibst[/url]
    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
     

  11. #11
    Avatar von Klein0r
    Klein0r Klein0r ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Ort
    Paderborn
    Beiträge
    718
    Zitat Zitat von deepthroat Beitrag anzeigen
    Versuch mal die WriteCharEntity Methode.
    Danke! So gehts.
    Allerdings mit kleinem Umweg für Windows (CRLF sind ja 2 Zeichen). Falls man das nicht mit der Schleife macht, wird nur der erste Char des Strings geschrieben.

    Code vbnet:
    1
    2
    3
    
    For Each c As Char In Environment.NewLine.ToCharArray
        XMLobj.WriteCharEntity(c)
    Next

    Erledigt und danke für euere Unterstützung.
     

Ähnliche Themen

  1. HTML Entities umwandel Problem
    Von son gohan im Forum PHP
    Antworten: 2
    Letzter Beitrag: 10.03.08, 11:07
  2. html entities
    Von benni miles im Forum PHP
    Antworten: 6
    Letzter Beitrag: 06.08.07, 18:15
  3. SimpleXML HTML Entities
    Von Nambot im Forum PHP
    Antworten: 3
    Letzter Beitrag: 03.08.07, 00:49
  4. HTML-Entities mit CSS formatieren
    Von di-five im Forum CSS
    Antworten: 2
    Letzter Beitrag: 21.07.07, 01:29
  5. html entities in Mehrfachauswahl
    Von bollibopsel im Forum HTML & XHTML
    Antworten: 1
    Letzter Beitrag: 04.05.07, 14:38