SVG – Learning by Coding

[ parsexml_gzip.svg --> Grafik anzeigen ]

  1: 
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
  2: 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"

  3: 
  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [

  4: 
  <!ATTLIST svg xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">

  5: 
]>

​  6:   7: 
<!-- SVG Learning by Coding http://www.datenverdrahten.de/svglbc/ -->

  8: 
<!--    AuthorDrThomas Meinike 01/05 thomas@handmadecode.de     -->

​  9:  10: 
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"

 11: 
  onload="getSVGDoc(evt)">

​ 12:  13: 
  <title>SVG Learning by Coding</title>

 14: 
  <desc>SVG-Spezifikation in Beispielen</desc>

​ 15:  16: 
  <defs>

​ 17:  18: 
    <style type="text/css">

 19: 
      <![CDATA[

​ 20:  21: 
      line

 22: 
      {

 23: 
        stroke#000;

 24: 
        stroke-width1px

 25: 
      }

​ 26:  27: 
      g text

 28: 
      {

 29: 
        font-familyArial,Helvetica,sans-serif;

 30: 
        font-size10px;

 31: 
      }

​ 32:  33: 
      ]]>

 34: 
    </style>

​ 35: ​ 36:  37: 
    <script type="text/javascript">

 38: 
      <![CDATA[

​ 39:  40: 
      var svgdoc,svgroot,xmldoc,xdaten,ydaten,anzahl,ver="";

​ 41: ​ 42:  43: 
      function getSVGDoc(load_evt)

 44: 
      {

 45: 
        svgdoc=load_evt.target.ownerDocument;

 46: 
        svgroot=svgdoc.documentElement;

 47: 
        if(window.getSVGViewerVersion)ver=getSVGViewerVersion();

 48: 
      }

​ 49: ​ 50:  51: 
      function XMLDaten()

 52: 
      {

 53: 
        if(ver.indexOf("Adobe")!=-&& window.getURL)getURL("xmldaten.svgz",callback);

 54: 
        else alert("Diese Technik ist nicht verfuegbar!");

 55: 
      }

​ 56: ​ 57:  58: 
      function callback(urlRequestStatus)

 59: 
      {

 60: 
        if(urlRequestStatus.success)

 61: 
        {

 62: 
          xmldoc=parseXML(urlRequestStatus.content);

 63: 
          xdaten=xmldoc.getElementsByTagName("x");

 64: 
          ydaten=xmldoc.getElementsByTagName("y");

 65: 
          anzahl=xdaten.length;

 66: 
          if(anzahl==ydaten.length)FunktionZeichnen();

 67: 
        }

 68: 
      }

​ 69: ​ 70:  71: 
      function FunktionZeichnen()

 72: 
      {

 73: 
        var startx=300,starty=200,fx=10,fy=50,x,y,wertepaar="",punkte="",elemobj,

 74: 
            svgns="http://www.w3.org/2000/svg";

​ 75:  76: 
        // x,y-Daten grafisch darstellen - Daten aufbereiten

 77: 
        for(i=0;i<anzahl;i+=10)

 78: 
        {

 79: 
          x=xdaten.item(i).firstChild.nodeValue;

 80: 
          y=ydaten.item(i).firstChild.nodeValue;

​ 81:  82: 
          wertepaar=(startx+x*fx).toString()+","+(starty-y*fy).toString()+" ";

 83: 
          punkte+=wertepaar;

 84: 
        }

​ 85:  86: 
        // Funktionsgraph mittels polyline erzeugen

 87: 
        elemobj=svgdoc.createElementNS(svgns,"polyline");

 88: 
        elemobj.setAttribute("points",punkte);

 89: 
        elemobj.setAttribute("stroke","#090");

 90: 
        elemobj.setAttribute("stroke-width","1.5px");

 91: 
        elemobj.setAttribute("fill","none");

 92: 
        svgroot.appendChild(elemobj);   

​ 93:  94: 
        // Link bzw. Text aus-/einblenden

 95: 
        svgdoc.getElementById("aktion").style.setProperty("visibility","hidden","");

 96: 
        svgdoc.getElementById("info").style.setProperty("visibility","visible","");

 97: 
      }

​ 98:  99: 
      ]]>

100: 
    </script>

​101: 102: 
  </defs>

​103: 104: 
  <text x="20" y="30" style="fill: #000; font-size: 24px">

105: 
    parseXML()</text>

106: 
  <text x="20" y="50" style="fill: #000; font-size: 14px">

107: 
    mit GZip-komprimierten Daten (svgz)</text>

​108: 109: 
  <!-- Achsen -->

110: 
  <line x1="50" y1="200" x2="547" y2="200"/>

111: 
  <line x1="300" y1="50" x2="300" y2="350"/>

112: 
  <line x1="540" y1="195" x2="550" y2="200"/>

113: 
  <line x1="540" y1="205" x2="550" y2="200"/>

114: 
  <line x1="295" y1="60" x2="300" y2="50"/>

115: 
  <line x1="300" y1="50" x2="305" y2="60"/>

​116: 117: 
  <!-- Achsenteilung x -->

118: 
  <g>

119: 
    <line x1="100" y1="200" x2="100" y2="205"/>

120: 
    <line x1="150" y1="200" x2="150" y2="205"/>

121: 
    <line x1="200" y1="200" x2="200" y2="205"/>

122: 
    <line x1="250" y1="200" x2="250" y2="205"/>

123: 
    <line x1="350" y1="200" x2="350" y2="205"/>

124: 
    <line x1="400" y1="200" x2="400" y2="205"/>

125: 
    <line x1="450" y1="200" x2="450" y2="205"/>

126: 
    <line x1="500" y1="200" x2="500" y2="205"/>

​127: 128: 
    <text x="93" y="215">-20</text>

129: 
    <text x="143" y="215">-15</text>

130: 
    <text x="193" y="215">-10</text>

131: 
    <text x="243" y="215">-5</text>

132: 
    <text x="347" y="215">5</text>

133: 
    <text x="395" y="215">10</text>

134: 
    <text x="445" y="215">15</text>

135: 
    <text x="495" y="215">20</text>

136: 
    <text x="555" y="203" style="font-size: 12px">x</text>

137: 
  </g>

​138: 139: 
  <!-- Achsenteilung y -->

140: 
  <g>

141: 
    <line x1="295" y1="100" x2="300" y2="100"/>

142: 
    <line x1="295" y1="150" x2="300" y2="150"/>

143: 
    <line x1="295" y1="250" x2="300" y2="250"/>

144: 
    <line x1="295" y1="300" x2="300" y2="300"/>

​145: 146: 
    <text x="297" y="40" style="font-size: 12px">y</text>

147: 
    <text x="287" y="103">2</text>

148: 
    <text x="287" y="153">1</text>

149: 
    <text x="284" y="253">-1</text>

150: 
    <text x="284" y="303">-2</text>

151: 
  </g>

​152: 153: 
  <g id="aktion">

154: 
    <a xlink:href="" cursor="pointer" onclick="return false">

155: 
      <text x="185" y="380" style="fill: #00C; font-size: 14px"

156: 
        onclick="XMLDaten()">XML-Daten laden Funktion zeichnen

157: 
        <set attributeName="fill" attributeType="CSS" to="#F00" begin="mouseover"/>

158: 
        <set attributeName="fill" attributeType="CSS" to="#00C" begin="mouseout"/>

159: 
      </text>

160: 
    </a>

161: 
  </g>

​162: 163: 
  <g id="info" style="visibility: hidden">

164: 
    <text x="210" y="380" style="fill: #00C; font-size: 14px">

165: 
      Funktionsin(2 x) + 2 sin(x)

166: 
    </text>

167: 
  </g>

​168: 169: 
  <text x="100" y="390" style="fill: #F00; font-size: 12px">

170: 
    <tspan x="100" dy="16">Es werden 200 KB komprimierte XML-Daten geladen

171: 
      (unkomprimiert 1.2 MB).</tspan>

172: 
    <tspan x="100" dy="16">Von den 44000 x,y-Datensätzen werden 4400 Paare

173: 
      mittels polyline-Element</tspan>

174: 
    <tspan x="100" dy="16">grafisch dargestellt.</tspan>

175: 
  </text>

​176: 177: 
</svg>

[zum Anfang]