Wowbagger: XML vs. proprietärer parser

Hi leute,

für ein content-management-system auf PHP/MySQL basis stellt sich mir das problem, daß benutzer zwar in der lage sein müssen,  formatierten text hochzuladen, allerdings HTML nicht zulässig ist.
Also habe ich mir überlegt, den upload zu filtern (schmeiße alle HTML-tags 'raus), einen proprietären parser zu schreiben (PHP-basis) und eigene formatierungsbefehle im dokument zu interpretieren (was weis ich, die üblichen dinge wie schriftart- u. größe, hyperlinks, wo sollen bilder hin, allg. einfache textformatierungen...), also sowas wie z.b. {befehl:parameter}text, was im grunde sehr gut funkt (der parser ist schon 90%ig fertig).

Nun las ich durch zufall 'mal wieder etwas über das thema XML und dachte mir: wenn du XML dateien zum upload akzeptierst, welche einer von dir festgelegten DTD genügen, kannst du doch auch sicherlich daraus mit hilfe von XLS und CSS ganz gewöhnlichen, formatierten HTML-code erzeugen, nicht wahr?!
Nun ist es aber so, daß ich von der kette XML-->DTD-->XLS-->HTML keinen allzu guten überblick habe, also bestimmte fragen gar nicht beurteilen kann. Z.B.:

* welcher vorteil entsteht mir gegenüber meinem PHP-parser, gerade auch in bezug auf zeit- und arbeitsaufwand sowie erweiterbarkeit und wartungsaufwand bei änderungen oder ergänzungen?

* ich möchte nur bestimmte HTML-tags zulassen, deren syntax sich nicht einmal ändern muß (z.b. <b>), wenn ich nun eine DTD schreibe, in der ich die gewünschten tags aufnehme und andere zusätzliche proprietäre und wieder andere HTML-tags eben weglasse, erfüllt das meine erwartungen? Werden auch wirklich nur die tags interpretiert, die auch definiert wurden? Wie fange ich z.b. dann fehler ab, wenn im XML dokument tags benutzt werden, die meine DTD nicht kennt?

Wo kann man sich evtl. einmal ein tutorial ziehen, in dem etwas ähnliches wie das, was ich vor habe behandelt wird?

euer (etwas ratloser) Wowbagger
/*,*/

  1. Hi,

    Nun ist es aber so, daß ich von der kette XML-->DTD-->XLS-->HTML keinen allzu guten überblick habe

    Die Reihenfolge wäre eher so: DTD-->XML-->XSL(T)-->HTML

    * welcher vorteil entsteht mir gegenüber meinem PHP-parser, gerade auch in bezug auf zeit- und arbeitsaufwand sowie erweiterbarkeit und wartungsaufwand bei änderungen oder ergänzungen?

    Bei Änderungen schreibst du "einfach" die zugrundeliegende DTD um, bzw. entfernst Elemente oder fügst welche hinzu. Ich bin zwar nicht PHP-kundig, vermute aber mal, daß du hierbei Änderungen im Code an verschiedenen Stellen durchführen müsstest, was m.E. doch um einiges aufwändiger wäre...

    * ich möchte nur bestimmte HTML-tags zulassen, deren syntax sich nicht einmal ändern muß (z.b. <b>), wenn ich nun eine DTD schreibe, in der ich die gewünschten tags aufnehme und andere zusätzliche proprietäre und wieder andere HTML-tags eben weglasse, erfüllt das meine erwartungen?

    Dies funkt m.E. ganz hervorragend (wenn du validierst, s.u.), nur nimmst du in die DTD keine HTML-Tags auf. Die DTD soll die mögliche Struktur deines XML-Dokuments festlegen. Dinge wie "fett" oder "kursiv" implementierst du als Attribute oder Entities, Absätze und Überschriften als Elemente. Das ganze _muß_ ja am Ende eine Baumstruktur ergeben. Die Umwandlung in HTML erfolgt erst im übernächsten Schritt, dem Parsen des XML-Dokuments mit dem XSL(T)-Prozessor, z.B. mit XT von James Clark (http://www.jclark.com/xml/xt.html).

    Werden auch wirklich nur die tags interpretiert, die auch definiert wurden? Wie fange ich z.b. dann fehler ab, wenn im XML dokument tags benutzt werden, die meine DTD nicht kennt?

    Wird das XML-Dokument gegen die zugrundeliegende DTD validiert (z.B mit Xerces / http://xml.apache.org/index.html) werden nur die Tags verarbeitet, die in der DTD definiert sind. Wie das Exception-Handling aussehen kann weiß ich nicht, aber mit ein paar Zeilen Code läßt sich da bestimmt was machen... ;-)

    Wo kann man sich evtl. einmal ein tutorial ziehen, in dem etwas ähnliches wie das, was ich vor habe behandelt wird?

    Ein Einstiegspunkt der mir einfallen würde wäre das XML-FAQ (http://www.ucc.ie/xml/); oder du schaust mal in das Archiv der deutschsprachigen XML-Mailingliste (http://www.listserv.gmd.de/archives/xml-de.html) ob so etwas mal gefragt worden ist.

    euer (etwas ratloser) Wowbagger

    Hoffentlich jetzt etwas weniger ratlos, wenn nicht tut's mir leid :-(

    Gruß

    Thomas

    1. Hi,

      euer (etwas ratloser) Wowbagger
      Hoffentlich jetzt etwas weniger ratlos, wenn nicht tut's mir leid :-(

      immernoch ratlos, aber etwas "schlauer" als vorher, danke ;)
      Habe aber inzwischen auch weitere infos gefunden und bin noch am "abgrasen"...

      /*,*/

  2. Hallo Wow!

    Die andere Fragen wurden schon beantwortet, aber die

    Wo kann man sich evtl. einmal ein tutorial ziehen, in dem etwas ähnliches wie das, was ich vor habe behandelt wird?

    ist zu undefinert. Tutorial zu was? (zu deinem Problem gibt es vermutlich nichts was direktes)
    Was genau möchtest du wissen?

    Grüße
    Thomas

    PS:
    »»Wie fange ich z.b. dann fehler ab, wenn im XML dokument tags benutzt werden, die meine DTD nicht kennt?

    Du fängst den Fehler nicht ab. Der XML Parser wird es tun (müssen) Er wird dort anhalten wo der Fehler ist und nicht weiter Parsen.
    Am einfachsten du testest es mit dem IE5, der hat einen eigebauten XML parser, der auch valideren kann. (oder XML-Nootbook von MS)

    1. Hi bruder!

      Wo kann man sich evtl. einmal ein tutorial ziehen, in dem etwas ähnliches wie das, was ich vor habe behandelt wird?

      ist zu undefinert. Tutorial zu was? (zu deinem Problem gibt es vermutlich nichts was direktes)
      Was genau möchtest du wissen?

      ich hatte gehofft, für mein spezielles prob etwas zu finden, denn andere tuts habe ich natürlich bereits gezogen (im SelfSaug-verfahren ;))

      Am einfachsten du testest es mit dem IE5, der hat einen eigebauten XML parser, der auch valideren kann. (oder XML-Nootbook von MS)

      was evtl. ein problemchen ist: für "alte" browser muß ich aus XML natürlich irgendwie HTML erzeugen, also muß man serverseitig (per XSL (hatte ich gestern "XLS" geschrieben? peinlich *G*) für formatierung sorgen, serverseitig deshalb, weil mindestens die "alten", aber auch imho neuere browser keine XML-geeignete formatierungssprache unterstützen (inwiefern CSS für XML geeignet ist, weis ich z.b. auch nicht).
      Hier habe ich noch keine konkrete vorstellung, _was_ genau beim ISP installiert sein muß, um diese aufgabe zu erfüllen...was hier mittlerweile zu einem serverseitigen standard geworden ist (XSL ist imho überhaupt noch nicht 100%ig ausgegoren, oder irre ich da?)

      Na ja, ich habe hier jetzt ein paar dokus, und sobald die zeit da ist, lese ich auch darin...scheint ja zumindest zukunftsweisend irgendwo...am anfang von PHP dachte ich z.b. ja auch "was willst du damit, du hast ASP oder CF?", aber jetzt finde ich mittlerweile so richtig gefallen daran, kann ja mit XML auch so gehen *G*

      bis denn...
      /*,*/

      1. Hallo Bruder ;-)

        Hier habe ich noch keine konkrete vorstellung, _was_ genau beim ISP installiert sein muß, um diese aufgabe zu erfüllen...was hier mittlerweile zu einem serverseitigen standard geworden ist (XSL ist imho überhaupt noch nicht 100%ig ausgegoren, oder irre ich da?)

        XSL ist nicht ausgegoren. Brauchst auch nicht. Du brauchst XSLT. Damit du dein XML zu HTML transformieren kannst (das T im XSLT).

        Serverseiteig ist richtig: es gibt viele kommerzielle Produkte; wie es mit open source beim XSL-Prozessoren aussieht im Moment, kann ich nicht sagen. Ob Jave, CGI oder PHP aber etwas muss auf dem Server die Anfragen vom User auffangen, bearbeiten und beantworten.

        Grüße
        Thomas