Tim Tepaße: (HTML5) inline-SVG für Text-Layout (mit Kringeln und so)

Beitrag lesen

Allerdings ist das natürlich nicht das was ich will. Mir gings ja
darum HTML und SVG böse zu vermengen. Das seh ich bei genamespaceten
Tags aber nicht. Dafür ist bestimmt kein Mischcontent vorgesehen.

Mal eine dumme Frage, was möchtest Du überhaupt für einen Mischcontent erreichen? „Böse zu vermengen“ im Sinne von wild Elemente mischen ist gerade bei SVG etwas, für das ich mir niemals Browser-Support vorstellen kann. Was möglich ist, ist es kleine SVG-Inseln anzulegen, für SVG-Grafiken eben.

Aber: Dein originaler Kringel (sieht mehr wie eine Spirale aus) hätte wohl die folgende Struktur:

HTML-Dokument
  └ <svg>
    └ ...
     └ <foreignObject>
       └ <div xmlns="http://http://www.w3.org/1999/xhtml">
         └ ...

Und da hast Du ein Problem:

»The HTML syntax does not support namespace declarations, even in foreign elements.«

Soll heissen, im Prinzip kann man in in HTML5-Syntax eingebettetes SVG keine Elemente aus anderen Namensräumen einbetten, also landen die versuchten HTML-Elemente im DOM im SVG-Namensraum und was dann mit denen im Browser passiert ... keine Ahnung. Und umgekehrt ist es wohl ebenso unvorhersehbar, wenn man HTML-Elemente ohne Namensraumdeklaration in SVG packt.

Also bleiben mir dann nur noch einfache SVG-Textelemente, kein HTML-
Fließtext innerhalb der SVG-Graphiken.

Wobei ich dann auch gezweifelt hätte, dass sich mit SVG-Bordmitteln ein HTML-Bereich entlang des Pfades Deiner Spirale, Deines Kringels lang hätte ausrichten kann. Ich bezweifel wirklich, dass wildes Mischen irgendwann so möglich ist, wie Du es Dir vorzustellen scheinst. Ich sehe übrigens hier kein wirkliches Anderssein, der SVG-in-HTML5 im Gegensatz zu SVG-in-XHTML5, ausser höchstens, dass man in ersterem keine Namensraumdeklarationen braucht. Es wird immer eine Grafik-Insel in HTML bleiben, kein Hybrid aus beidem. SVG-in-HTML5 ist eigentlich nur ein syntaktischer Shortcut.

DAS funktioniert wie gesagt noch nicht in den aktuellen Browserversionen. Die XML-Plattform ist da viel etablierter.

Vielleicht stehe ich mit dieser Meinung wirklich alleine, aber ungleich der WHATWG-Clique habe ich Namensraumdeklarationen nie als problematisch empfunden und halte es auch nicht für problematisch hier und da xmlnse samt passender URIs zu setzen. Ein guter Texteditor hilft natürlich. Ich würde also einfach zu XHTML5-Syntax greifen, wenn Bedarf an erweiterten SVG besteht.

Der Punkt an SVG in HTML war ja nie, dass man es nur in HTML5-Syntax einbetten kann, sondern dass SVG-DOM in HTML-DOM erlaubt wird. Das geschieht sowohl in HTML5-Syntax als auch in XHTML5-Syntax.