SVG – Learning by Coding
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: <!-- Author: Dr. Thomas 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-DOM: SVG-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]