Markus B.: Ein Svg im Svg verlinken

Hi ihr,

Also Ich habe eine XSLT und bilde daraus ein Svg, sagen wir ein Diagramm.
Nun will ich zu dem Diagramm in Svg Beschreibungen und Legenden hinzufügen ohne jedoch mein Svg(bzw dei XSLT) ganz neu aufzubauen, weil dass sehr komplex waere und ich nichteinmal weiss ob das geht.
Deswegen dachte ich das ich in einer anderen Transformation ein weiteres Svg erstelle mit den Beschreibungen und Legenden und dann in dieser Svg will Ich in dann die Svg grafik verlinken so dass ich die Svg(grafik) mit Beschreibungen und Legenden haben.

Ich hab dazu mal ein Pdf anghangen.

Quellcode bisher, welceh jedoch nich funktioniert.

<?xml version="1.0" encoding="UTF-8"?>  
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">  
    <xsl:output name="xml" method="xml" omit-xml-declaration="no" indent="yes" version="1.0"  
        doctype-system="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"  
        doctype-public="-//W3C//DTD SVG 1.1//EN"/>  
  
    <xsl:template name="first" match="/data">  
  
        <xsl:result-document format="xml" href="output1.svg">  
  
            <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="1000" height="500"  
                xmlns:xlink="http://www.w3.org/1999/xlink">  
                <text>Hier wird dann Die Diagramm Transformation stehen</text>  
                <xsl:call-template name="test"/>  
            </svg>  
        </xsl:result-document>  
  
        <xsl:call-template name="first2"/>  
    </xsl:template>  
    <xsl:template name="test" match="line">  
        <line x1="100" y1="{.}" x2="500" y2="{following-sibling::line}"/>  
    </xsl:template>  
    <xsl:template name="first2">  
  
        <xsl:result-document format="xml" href="output2.svg">  
            <svg xmlns="http://www.w3.org/2000/svg" version="1.1"  
                xmlns:xlink="http://www.w3.org/1999/xlink">  
                <text> Hier Steht dann Beschreibung </text>  
                <g xlink:href="output1.svg"/>  
                <text> Und hier Legende</text>  
            </svg>  
        </xsl:result-document>  
  
    </xsl:template>  
</xsl:stylesheet>
  1. Hallo Markus,

    »»         <xsl:result-document format="xml" href="output2.svg">  
    
    >             <svg xmlns="http://www.w3.org/2000/svg" version="1.1"  
    >                 xmlns:xlink="http://www.w3.org/1999/xlink">  
    >                 <text> Hier Steht dann Beschreibung </text>  
    >                 <g xlink:href="output1.svg"/>  
    >                 <text> Und hier Legende</text>  
    >             </svg>  
    >         </xsl:result-document>
    
    

    Das g-Element besitzt kein xlink:href-Attribut. Hier kann das use-Element verwendet werden, welches interne oder externe Referenzen einbinden kann. Schreibe in das externe SVG-Dokument im defs-Bereich eine Gruppe, z. B. mit der ID extern, also <g id="extern">...</g> und binde diese so ein:

    <use xlink:href="output1.svg#extern"/> (Attribute x, y, height und width lassen sich noch explizit setzen).

    Hinweis: Aktuelle Opera-Versionen und IEs mit ASV 6 preview 1 (nicht ASV 3.03) machen das mit, Firefox 3.0.8 und Safari 3.2.2 leider nicht.

    Grüße,
    Thomas

    1. Hi Thomas

      Schon einmal danke dafür!, werde das dann so ändern.

      Andere Problematik bzw Frage dazu,
      Das Svg wird später mit batik nach Pdf umgewandelt, weiss jmd ob dies möglich ist dann mit dem verlinken oder wirds das probleme geben?

      Ps: Ich sitze an einem Mac OsX da kann ich den ASV 6 nicht benutzen, dieser geht nur bis XP.

      Danke,
      Markus

      Hinweis: Aktuelle Opera-Versionen und IEs mit ASV 6 preview 1 (nicht ASV 3.03) machen das mit, Firefox 3.0.8 und Safari 3.2.2 leider nicht.

      Grüße,
      Thomas

      1. Hallo,

        Andere Problematik bzw Frage dazu,
        Das Svg wird später mit batik nach Pdf umgewandelt, weiss jmd ob dies möglich ist dann mit dem verlinken oder wirds das probleme geben?

        Batik release 1.7 kann/unterstützt xlink:href bei svg:use. Wie die Darstellung selbst dann aussieht, kann ich es aber nicht sagen.

        Grüße
        Thomas (der andere)