Announcement

Collapse
No announcement yet.

SVG in SVG referenzieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SVG in SVG referenzieren

    Hallo!

    Ich habe mich zu diesem Thema die letzten zwei Tage zu tode gegoogelt und recherchiert.

    Ich möchte in eine SVG-Datei Teile von eienr anderen einbinden und will das mal anhand von zwei kurzen Dateien demonstrieren:

    Zuerst eine komplett eingenständige Datei (1.svg) mit einem Kreis und einer Ellipse wechle mit ids im <defs> Bereich definiert sind und dann mit <use> und dem entsprechnden XLink innerhalb der Datei referenziert sind:

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <svg 
        xmlns="http://www.w3.org/2000/svg"
        xmlns:xlink="http://www.w3.org/1999/xlink"
        viewBox = "0 0 1000 1000" version = "1.1">
        <defs>
            <circle id = "s1" cx = "200" cy = "200" r = "200" fill = "yellow" stroke = "black" stroke-width = "3"/>
            <ellipse id = "s2" cx = "200" cy = "150" rx = "200" ry = "150" fill = "salmon" stroke = "black" stroke-width = "3"/>
        </defs>
        <use x = "100" y = "100" xlink:href = "#s1"/>
        <use x = "100" y = "650" xlink:href = "#s2"/>
    </svg>
    Soweit so gut - funktioniert alles wie gewollt mit diversen Viewern.

    Jetzt würde ich gerne aber aus einer zweiten SVG-Datei (2.svg) den Kreis, der in dem <def>-Bereich der Datei 1.svg deklariert ist mit <use> einbinden:

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <svg    
        xmlns="http://www.w3.org/2000/svg"
        xmlns:xlink="http://www.w3.org/1999/xlink"
        viewBox = "0 0 1000 1000" version = "1.1">
        <defs>        
            <ellipse id = "s2" cx = "200" cy = "150" rx = "200" ry = "150" fill = "salmon" stroke = "black" stroke-width = "3"/>
        </defs>
        <use x = "100" y = "100" xlink:href = "1.svg#s1"/>
        <use x = "100" y = "650" xlink:href = "#s2"/>
    </svg>
    Das funktioniert bei mir allerdings mit keinem Viewer. Daher meine Fragen:

    1. Geht das überhaupt?
    2. Ist der XLink falsch?
    3. Unterstützt noch kein Viewer den svg bzw. XLink Standard?

    Das Ganze müsste doch irgendwie gehen..

    Siehe auch: http://www.w3.org/TR/SVG11/linking.html#LinksIntoSVG

    Vielen Dank!

  • #2
    Es funktioniert mit dem Adobe SVG Viewer 6.0, der allerdings nie über eine Preview-Version hinausgekommen ist. Technisch ist dieser jedoch besser als der ASV 3.0x. Alternativen wären Einbindung über <image xlink:href="name.svg" ... /> sowie das Nachladen der SVG-Inhalte mittels AJAX-Techniken (getURL / postURL im ASV bzw. XMLHttpRequest in Firefox, Opera ...).

    Comment


    • #3
      Technisch ist er zwar besser, aber mit dem Aufkauf von Macromedia ist für Adobe SVG gestorben. Ab 2009 wird der SVG Viewer nicht mehr zum download angeboten und ob er dann auch noch verteilt werden darf ist aktuell fraglich.

      Alternative ist aber z.B. der Renesis-Player

      Comment


      • #4
        Der ASV-Support läuft aus, der Download bleibt aber über 2009 hinaus erhalten (entgegen den ersten Ankündigungen). Renesis kann der OP natürlich auch testen.

        Comment


        • #5
          Stimmt, hab den letzten Update nicht so richtig verfolgt.

          Der beste Satz ist aber m.E.

          Adobe customer support for Adobe SVG Viewer will be discontinued on January 1, 2009
          Der Support war eh schon bei 0%. Einzig die imagegefährtenden Sicherheitslücken wurden geschlossen. Ansonsten wurden Fehler die durch das letzte Update eingeführt wurden als "As Designed" definiert.

          Comment


          • #6
            Hallo,

            vielen Dank! Funktioniert tatsächlich mit Adobe SVG Viewer 6.

            Mich wundert mittlerweile schon etwas wie lange es dauert, dass der SVG 1.1 Standard in Programmen und Viewer umgesetzt wird. Die Beta Version von Adobe ist von 2003! Seit dem scheint ja nicht so viel passiert zu sein. Mozilla unterstützt das zumindest noch nicht.
            Inscape will das sicherlich irgendwann unterstüzen, aber in der Roadmap konnte ich konkret zu diesen XLink nichts finden. Wann externe CSS-Dateien unterstüzt von Inksacpe werden ist auch noch nicht abzusehen. Oder weiß jemand näheres zur Entwicklung dieser zwei Punkte?

            Comment


            • #7
              Wie schon oben gesagt: Die Adobe SVG-Entwicklung ist eingestellt und irgendwas auf eine Beta-Version basiertent zu entwickeln ist mehr als Fahrlässig.

              Comment

              Working...
              X