Ralph: Problem beim Einbinden von PHP generiertem SVG Dokument

Hallo zusammen,

Ich habe für mein Abschlussprojekt vor eine Interaktive Deutschlandkarte im SVG Format mittels PHP aus einer Datenbank zu erzeugen (die Kommunen werden aufgrund verschiedener Daten anders eingefärbt)

Das alles funktioniert auch bereits wenn ich die PHP Datei einzeln im Browser öffne, sobald ich allerdings versuche die PHP Datei in ein HTML Object Tag einzufügen funktioniert es nicht mehr (auch nicht mit Pseudo Variablen die auf .svg enden)

  
<body>  
Hier kommen Formularfelder usw hin<br/>  
<object data="SVG.php?pseudo=bla.svg" width="600" height="550" type="image/svg">  
   <embed src="SVG.php?pseudo=bla.svg" width="600" height="550" type="image/svg"/>  
</object>  
</body>  

//EDIT (Beim Posten :-D): Im <embed> Tag klappt der Trick mit der Pseudo Variable, dadurch wird aber der <object> Tag überflüssig oder?

Als Randinformation vlt noch das die ganze Geschichte nur im IE 6 mit ASV 3 Laufen muss. Firefox, Opera usw sind unerheblich.

Weiterhin funktioniert in der genannten Konstellation übrigens kein type="image/svg+xml" Ohne "+xml" stellt der Browser alles einwandfrei dar...

Vielen Dank schon einmal im Voraus für eure Antworten!

Gruss,
Ralph

  1. Vielen Dank schon einmal im Voraus für eure Antworten!

    schon mal versucht, das ganze valide einzubinden? "embed" ist jedenfalls nicht html oder xhtml - kommt aber wohl in html 5 :(

    das hat zwar nichts mit deinem problem zu tun, aber den hinweis gibts gratis dazu

    meine defekte glaskugel sagt: dein http-header übermittelt text/html oder ähnliches und nicht image/svg+xml - "image/svg" ist übrigens nicht der empfohlene mime-type

    1. Validität in allen Ehren, aber wir alle müssen uns gelegentlich der bitteren Wahrheit von RFC 1925, Satz 1, stellen: It has to work - es muss funktionieren.

      Gruß, LX

      --
      X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: Unusual
      X-Please-Search-Archive-First: Absolutely Yes
      1. Validität in allen Ehren, aber wir alle müssen uns gelegentlich der bitteren Wahrheit von RFC 1925, Satz 1, stellen: It has to work - es muss funktionieren.

        darum schrieb ich ja, dass es als gratis hinweis zu sehen ist :D

    2. Vielen Dank schon einmal im Voraus für eure Antworten!

      schon mal versucht, das ganze valide einzubinden? "embed" ist jedenfalls nicht html oder xhtml - kommt aber wohl in html 5 :(

      das hat zwar nichts mit deinem problem zu tun, aber den hinweis gibts gratis dazu

      meine defekte glaskugel sagt: dein http-header übermittelt text/html oder ähnliches und nicht image/svg+xml - "image/svg" ist übrigens nicht der empfohlene mime-type

      Hi,

      Deine Glaskugel scheint wirklich sehr defekt zu sein :/
      den Header setze ich wie folgt:

        
      <?php  
        
       header("Content-type: image/svg+xml");  
       echo '<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>';  
       echo '<!-- DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" -->';  
       include 'getData.php';  
      ?>  
      <svg height="600" onload="init(evt);" preserveAspectRatio="xMinYMin meet" width="600">  
       <script type="text/ecmascript" xlink:href="script.js" />  
       <script type="text/ecmascript">  
      ...  
      
      

      Das janze funktioniert ja auch (wie beschrieben) mit embed, nur halt nicht mit object... Die PHP alleine aufgerufen wirft auch überhaupt keine Probleme

  2. Hallo Ralph,

    <object data="SVG.php?pseudo=bla.svg" width="600" height="550" type="image/svg">

    ...

    Der korrekte Inhaltstyp ist image/svg+xml und dieser sollte auch vom PHP-Skript mittels header() oder besser direkt über die Serverkonfiguration (etwa mime.types oder .htaccess) gesendet werden.

    Grüße,
    Thomas

    1. Hallo Ralph,

      <object data="SVG.php?pseudo=bla.svg" width="600" height="550" type="image/svg">
      ...

      Der korrekte Inhaltstyp ist image/svg+xml und dieser sollte auch vom PHP-Skript mittels header() oder besser direkt über die Serverkonfiguration (etwa mime.types oder .htaccess) gesendet werden.

      Grüße,
      Thomas

      Hi Thomas,

      danke für deine Mühe, aber lies dir bitte das nächste mal das ganze Posting
      durch... u.a. habe ich nämlich auch dort geschrieben das ein type="image/svg+xml" nicht funktioniert, ohne das +xml aber sehr wohl.
      Woran das liegen mag kann ich auch nur vermuten, evtl hat es was mit dem Browser zu tun (es ist ein angepasster IE v6, ich weiss allerdings nicht was genau für Änderungen vorgenommen wurden, auf jeden Fall ne Menge)

      P.S. der PHP header wird standartkonform auf image/svg+xml gesetzt.

      Gruß,
      Ralph

      1. durch... u.a. habe ich nämlich auch dort geschrieben das ein type="image/svg+xml" nicht funktioniert, ohne das +xml aber sehr wohl.

        der adobe svg viewer hatte bei mir noch nie probelme mit image/svg+xml

        P.S. der PHP header wird standartkonform auf image/svg+xml gesetzt.

        interessant ist nur der http-header

      2. Hallo Ralph,

        u.a. habe ich nämlich auch dort geschrieben das ein type="image/svg+xml" nicht funktioniert, ohne das +xml aber sehr wohl.

        Seltsam.

        P.S. der PHP header wird standartkonform auf image/svg+xml gesetzt.

        Was wird denn tatsächlich vom Server geliefert (Testen)?

        Aus meiner Erfahrung kann ich noch anmerken, dass in der Praxis die SVG-Einbindung via iframe-Element von Vorteil ist, vor allem beim HTML-SVG-DOM-übergreifenden Scripting.

        Grüße,
        Thomas

        1. Was wird denn tatsächlich vom Server geliefert (Testen)?

          Also die Datei wird als SVG Dokument angezeigt wenn sie einzeln geladen wird, nur das Einbinden mittels <object> funktioniert nicht.
          Den Link kann ich leider nicht nutzen da sich das ganze im Intranet befindet

          Aus meiner Erfahrung kann ich noch anmerken, dass in der Praxis die SVG-Einbindung via iframe-Element von Vorteil ist, vor allem beim HTML-SVG-DOM-übergreifenden Scripting.

          Das klingt nach einer richtig guten Idee, wieso bin ich da nicht selbst drauf gekommen... (vor allem weil die Grafik öfters mal refreshed wird)

          Damit sollten eigentlich alle momentanen Probleme (und ein paar der Zukunft) gelöst sein, Vielen Dank!

          Gruss,
          Ralph

          1. Hallo Ralph,

            Also die Datei wird als SVG Dokument angezeigt wenn sie einzeln geladen wird, nur das Einbinden mittels <object> funktioniert nicht.
            Den Link kann ich leider nicht nutzen da sich das ganze im Intranet befindet

            Lade das SVG-Dokument in Firefox und frage unter "Extras" oder via Rechtsklick die "Seiteninformationen" ab.

            Grüße,
            Thomas

            1. Hi Thomas

              Lade das SVG-Dokument in Firefox und frage unter "Extras" oder via Rechtsklick die "Seiteninformationen" ab.

              wird korrekt als image/svg+xml erkannt.
              Im FF habe ich leider den ASV nicht zum laufen gekriegt,
              was zum Glück auch nicht nötig da der IE Unternehmensstandart ist.

              Ich bin schon deinem Rat gefolgt und habe die Datei per iframe eingebunden, funktioniert einwandfrei und ist auch für die weitere Entwicklung mit Sicherheit sehr hilfreich.

              Vielen Dank nochma für den Tipp!

              Gruss,
              Ralph