SVG – Learning by Coding

[ Mozilla-DOM-Test_6.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 09/05 thomas@handmadecode.de     -->

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

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

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

​ 14:  15: 
  <defs>

​ 16:  17: 
    <script type="text/javascript">

 18: 
      <![CDATA[

​ 19:  20: 
      var clk=true;

​ 21:  22: 
      function MozDOMTest6()

 23: 
      {

 24: 
        if(clk)

 25: 
        {

 26: 
          if((navigator.mimeTypes &&

 27: 
              navigator.mimeTypes["image/svg+xml"] &&

 28: 
              !navigator.mimeTypes["image/svg+xml"].enabledPlugin) ||

 29: 
              document.implementation.hasFeature("org.w3c.dom.svg","1.0"))

 30: 
          {

 31: 
            var req,xmlobject,new_rect,basepath,xptype,xpev,nsres;

 32: 
            var a,x,y,w,h,f,anzahl,x_akt,y_akt,w_akt,h_akt,f_akt;

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

​ 34:  35: 
            // synchroner XMLHttpRequest-Zugriff, bei umfangreicheren Dokumenten

 36: 
            // ggf. die asynchrone Variante verwenden, siehe Mozilla-DOM-Test_1.svg

 37: 
            if(window.XMLHttpRequest && window.XPathEvaluator)

 38: 
            {

 39: 
              // XML laden

 40: 
              req=new XMLHttpRequest();

 41: 
              req.open("GET","moztest.xml",false);

 42: 
              req.overrideMimeType("text/xml");

 43: 
              req.send(null);

 44: 
              xmlobject=req.responseXML;

​ 45:  46: 
              // XPathEvaluator-Instanz erzeugen

 47: 
              xpev=new XPathEvaluator();

​ 48:  49: 
              // Namespace-Resolver zuweisen

 50: 
              if(xpev.createNSResolver)

 51: 
              {

 52: 
                nsres=xpev.createNSResolver(xmlobject.ownerDocument==null ?

 53: 
                xmlobject.documentElement xmlobject.ownerDocument.documentElement);

 54: 
              }

 55: 
              else nsres=null;

​ 56:  57: 
              // Vorgaben fuer die XPath-Verarbeitung

 58: 
              xptype=XPathResult.ANY_TYPE;

 59: 
              basepath="/rechtecke/rechteck/";

​ 60:  61: 
              // Anzahl der rechteck-Elemente abfragen

 62: 
              a=xpev.evaluate("count(//rechteck)",xmlobject,nsres,xptype,null);

 63: 
              anzahl=a.numberValue;

​ 64:  65: 
              // Details zu rechteck-Elementen abfragen

 66: 
              x=xpev.evaluate(basepath+"x_koord",xmlobject,nsres,xptype,null);

 67: 
              y=xpev.evaluate(basepath+"y_koord",xmlobject,nsres,xptype,null);

 68: 
              w=xpev.evaluate(basepath+"breite",xmlobject,nsres,xptype,null);

 69: 
              h=xpev.evaluate(basepath+"hoehe",xmlobject,nsres,xptype,null);

 70: 
              f=xpev.evaluate(basepath+"@farbe",xmlobject,nsres,xptype,null);

​ 71:  72: 
              // Ergebnisse als neue rect-Elemente aufbereiten

 73: 
              for(i=0;i<anzahl;i++)

 74: 
              {

 75: 
                x_akt=x.iterateNext();

 76: 
                y_akt=y.iterateNext();

 77: 
                w_akt=w.iterateNext();

 78: 
                h_akt=h.iterateNext();

 79: 
                f_akt=f.iterateNext();

​ 80:  81: 
                new_rect=document.createElementNS(svgns,"rect");

 82: 
                new_rect.setAttribute("x",x_akt.textContent);

 83: 
                new_rect.setAttribute("y",y_akt.textContent);

 84: 
                new_rect.setAttribute("width",w_akt.textContent);

 85: 
                new_rect.setAttribute("height",h_akt.textContent);

 86: 
                new_rect.setAttribute("fill",f_akt.textContent);

​ 87:  88: 
                // aktuelles rect-Element in den SVG-DOM-Baum einhaengen

 89: 
                document.documentElement.appendChild(new_rect);

 90: 
              }

 91: 
              // Information einblenden

 92: 
              document.getElementById("info").style.setProperty("visibility","visible","");

 93: 
            }

 94: 
            else alert("Kein Ergebnis erhalten!");

 95: 
          }

 96: 
          else alert("Keine SVG-Implementierung\nauf Mozilla-Basis gefunden!");

 97: 
        }

 98: 
        else alert("Der Test wurde bereits ausgeführt!");

 99: 
      }

​100: 101: 
      ]]>

102: 
    </script>

​103: 104: 
  </defs>

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

107: 
    Mozilla-DOMSVG-Inhalte mittels XPath erzeugen</text>

​108: 109: 
  <a xlink:href="" cursor="pointer" onclick="return false"><text x="20" y="60" style="fill: #F00; font-size: 14px"

110: 
    onclick="MozDOMTest6();clk=false">Test ausführen!</text></a>

​111: 112: 
  <g id="info" style="visibility: hidden">

113: 
    <text x="80" y="350" font-size="12px">

114: 
      Die neuen SVG-Objekte wurden mittels XPath generiert.</text>

115: 
    <a xlink:href="moztest.xml"><text x="190" y="370"

116: 
      style="fill: #00C; font-size: 12px">XML-Dokument</text></a>

117: 
  </g>

​118: 119: 
</svg>

[zum Anfang]