html mit xml-Befehlssatz bearbeiten
html mit xml-Befehlssatz bearbeiten
Ich bearbeite gerade eine XHTML-Datei mit dem XML-Befehlssatz.
Schwierigkeiten bekommen ich allerdings bei Paragraphen mit span- und em-Elementen. z.B.
<p>Der Text beginnt <span>und</span läuft hier weiter</p>
Wie kann ich einen solchen <span>-Knoten selbst erzeugen und ihn "in der Mitter" des Knotentextes des p-Knotens platzieren?
Schwierigkeiten bekommen ich allerdings bei Paragraphen mit span- und em-Elementen. z.B.
<p>Der Text beginnt <span>und</span läuft hier weiter</p>
Wie kann ich einen solchen <span>-Knoten selbst erzeugen und ihn "in der Mitter" des Knotentextes des p-Knotens platzieren?
(Win 11 64-bit, PB 6.04 und 6.10)
Re: html mit xml-Befehlssatz bearbeiten
a²+b²=mc²
Re: html mit xml-Befehlssatz bearbeiten
Wie kann ich die Klammern escapen?
Kannst du mir ein (ganz kurzes) Beispiel mit beiden Varianten zeigen?
Funktioniert #ReFormat mit solchen "inneren" Knoten korrekt?
Kannst du mir ein (ganz kurzes) Beispiel mit beiden Varianten zeigen?
Funktioniert #ReFormat mit solchen "inneren" Knoten korrekt?
(Win 11 64-bit, PB 6.04 und 6.10)
Re: html mit xml-Befehlssatz bearbeiten
CData habe ich verstanden - vielen Dank für den Tipp. Zum escapen finde ich keinen Hinweis...
(Win 11 64-bit, PB 6.04 und 6.10)
Re: html mit xml-Befehlssatz bearbeiten
Code: Alles auswählen
<myNode><![CDATA[<p>Der Text beginnt <span>und</span läuft hier weiter</p>]]></myNode>Code: Alles auswählen
<myNode><p>Der Text beginnt <span>und</span> läuft hier weiter</p></myNode>a²+b²=mc²
Re: html mit xml-Befehlssatz bearbeiten
Hm. Wenn ich es richtig verstehe, dann wird der Code aber schlussendlich in den Beispielen später vom Browser nicht umgesetzt, weil ja die Klammern escaped sind, richtig? Das will ich ja gerade nicht...
(Win 11 64-bit, PB 6.04 und 6.10)
Re: html mit xml-Befehlssatz bearbeiten
poste mal ein kleines Beispiel anhand dessen wir Dein Problem nachvollziehen können.
Grüße ... Peter
Grüße ... Peter
a²+b²=mc²
Re: html mit xml-Befehlssatz bearbeiten
Wenn Du den erzeugten XHTML-Code einfach mit SaveXML() in eine Datei schreibst, wird das so sein, denke ich.Sebastian hat geschrieben:Hm. Wenn ich es richtig verstehe, dann wird der Code aber schlussendlich in den Beispielen später vom Browser nicht umgesetzt, weil ja die Klammern escaped sind, richtig?
Aber Du kannst stattdessen z.B. mit ComposeXML() den XHTML-Code in einem String speichern, mit ReplaceString() die "escapeten" spitzen Klammern wiederherstellen, und dann alles mit WriteString() in einer XHTML-Datei speichern.
Re: html mit xml-Befehlssatz bearbeiten
Hm. Dann bräuchte ich die XML-Bibliothek ja eigentlich gar nicht mehr und kann alles per writestring erstellen.
CData ist leider auch nicht die Lösung, Ich wusste nicht, dass dann auch wirklich CData in die Datei geschrieben wird. Ich dachte, dass dann einfach der Text selbst ignoriert wird - das wäre eine Lösung gewesen.
Ein Beispiel habe ich doch gegeben? Ich will ein <p>-Element erstellen und einen Teilbereich kursiv machen (über span oder em). Das Ganze am liebsten über die XML-Befehle, falls es denn möglich ist...
CData ist leider auch nicht die Lösung, Ich wusste nicht, dass dann auch wirklich CData in die Datei geschrieben wird. Ich dachte, dass dann einfach der Text selbst ignoriert wird - das wäre eine Lösung gewesen.
Ein Beispiel habe ich doch gegeben? Ich will ein <p>-Element erstellen und einen Teilbereich kursiv machen (über span oder em). Das Ganze am liebsten über die XML-Befehle, falls es denn möglich ist...
(Win 11 64-bit, PB 6.04 und 6.10)
Re: html mit xml-Befehlssatz bearbeiten
Dazu sind mehrere Schritte nötig. Du musst das <span> innerhalb des <p> erstellen, den ensprechenden Inhalt setzen und diesen Inhalt dann aus dem <p> Element löschen.
In diesem Beispiel sieht man an den Debug-Ausgaben ganz gut wie sich die Einzelschritte im XML auswirken:
In diesem Beispiel sieht man an den Debug-Ausgaben ganz gut wie sich die Einzelschritte im XML auswirken:
Code: Alles auswählen
; XML Parsen und <p> Knoten finden
ParseXML(0, "<p>Der Text beginnt und läuft hier weiter</p>")
P = MainXMLNode(0)
Debug ComposeXML(0, #PB_XML_NoDeclaration)
; Position für <span>-Element (0-basiert)
SpanStart = 17
SpanEnd = 20
; 1) Neues <span>-Element in <p> erstellen
Span = CreateXMLNode(P, "span")
Debug ComposeXML(0, #PB_XML_NoDeclaration)
; 2) <span>-Element an die richtige Position in <p> rücken
SetXMLNodeOffset(Span, SpanStart)
Debug ComposeXML(0, #PB_XML_NoDeclaration)
; 3) Inhalt für <span> setzen
SpanText$ = Mid(GetXMLNodeText(P), SpanStart+1, SpanEnd-SpanStart)
SetXMLNodeText(Span, SpanText$)
Debug ComposeXML(0, #PB_XML_NoDeclaration)
; 4) Inhalt des <span> aus <p> entfernen
PText$ = GetXMLNodeText(P)
PText$ = Left(PText$, SpanStart) + Right(PText$, Len(PText$) - SpanEnd)
SetXMLNodeText(P, PText$)
Debug ComposeXML(0, #PB_XML_NoDeclaration)