<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xml:lang="en" lang="en">
<head>
	<title>XHTML with embeded SVG test</title>
	<style type="text/css"><![CDATA[
		body { font-family: Verdana, sans-serif; font-size: 10pt; }
		h1, h2 { margin: 0px 2px; padding: 0px; border-bottom: 1px; }
		pre { font-size: 9pt; padding: 2px; border: 1px dashed black; background-color: #f0f0f0; }
		.smallprint { font-size: 8pt; padding: 0px 5px; }
		text { font-size: 8pt; font-family: Georgia, Verdana, sans-serif; }
	]]></style>
</head>

<body>
	<h1>Embedding SVG in XHTML</h1>
	<div class="smallprint">
		Shahar Evron <a href="http://prematureoptimization.org/">http://prematureoptimization.org/</a> 2007-03-25
	</div>
	<p>Traditionally, PHP has been used to dynamically generate HTML. Now, 
	when valid XHTML is common and browsers can render SVG, you could 
	easily embed SVG graphics into your XHTML, and that graphic could be 
	dynamically generated by PHP.</p>
	
	<p>The following graph shows the number of news posts per hour in 
	<a href="http://digg.com">digg.com</a> from the last hours. It is a
	dynamically generated SVG image created by PHP (data is cached for 30 minutes):</p>
	
		<svg:svg width="100%" height="280">
		<!-- some defs -->
		<svg:defs>
			<svg:linearGradient id="BarGradient">
				<svg:stop offset="0%" stop-color="#F60" />
				<svg:stop offset="100%" stop-color="#FF6" />
			</svg:linearGradient>
		</svg:defs>
		
		<svg:g transform="translate(5, 5)">
		
			<!-- frame -->	
			<svg:rect x="1px" y="1px" width="360px" height="235px" fill="none" stroke="#000" stroke-width="1px" />
		
			<!-- y grid -->
			<svg:g transform="translate(5, 210)">
				<svg:path d="M 25 0 L 350 0 z" fill="none" stroke="#999" stroke-dasharray="3,3" />
				<svg:text align="right" y="5" x="10">0</svg:text>
			</svg:g>
			<svg:g transform="translate(5, 187.77777777778)">
				<svg:path d="M 25 0 L 350 0 z" fill="none" stroke="#999" stroke-dasharray="3,3" />
				<svg:text align="right" y="5" x="10">1</svg:text>
			</svg:g>
			<svg:g transform="translate(5, 165.55555555556)">
				<svg:path d="M 25 0 L 350 0 z" fill="none" stroke="#999" stroke-dasharray="3,3" />
				<svg:text align="right" y="5" x="10">2</svg:text>
			</svg:g>
			<svg:g transform="translate(5, 143.33333333333)">
				<svg:path d="M 25 0 L 350 0 z" fill="none" stroke="#999" stroke-dasharray="3,3" />
				<svg:text align="right" y="5" x="10">3</svg:text>
			</svg:g>
			<svg:g transform="translate(5, 121.11111111111)">
				<svg:path d="M 25 0 L 350 0 z" fill="none" stroke="#999" stroke-dasharray="3,3" />
				<svg:text align="right" y="5" x="10">4</svg:text>
			</svg:g>
			<svg:g transform="translate(5, 98.888888888889)">
				<svg:path d="M 25 0 L 350 0 z" fill="none" stroke="#999" stroke-dasharray="3,3" />
				<svg:text align="right" y="5" x="10">5</svg:text>
			</svg:g>
			<svg:g transform="translate(5, 76.666666666667)">
				<svg:path d="M 25 0 L 350 0 z" fill="none" stroke="#999" stroke-dasharray="3,3" />
				<svg:text align="right" y="5" x="10">6</svg:text>
			</svg:g>
			<svg:g transform="translate(5, 54.444444444444)">
				<svg:path d="M 25 0 L 350 0 z" fill="none" stroke="#999" stroke-dasharray="3,3" />
				<svg:text align="right" y="5" x="10">7</svg:text>
			</svg:g>
			<svg:g transform="translate(5, 32.222222222222)">
				<svg:path d="M 25 0 L 350 0 z" fill="none" stroke="#999" stroke-dasharray="3,3" />
				<svg:text align="right" y="5" x="10">8</svg:text>
			</svg:g>
			<svg:g transform="translate(5, 10)">
				<svg:path d="M 25 0 L 350 0 z" fill="none" stroke="#999" stroke-dasharray="3,3" />
				<svg:text align="right" y="5" x="10">9</svg:text>
			</svg:g>
			
			<!-- x / y axis -->
			<svg:path d="M 30 210 L 350 210 z" fill="none" stroke="#000" />
			<svg:path d="M 30 10 L 30 210 z" fill="none" stroke="#000" />
		
			<!-- bars -->
			<svg:g transform="translate(30, 10)">
				<svg:rect x="5px" y="67px" width="25px" height="133px" fill="url(#BarGradient)" stroke="#000000" stroke-width="1px" />
				<svg:text x="0px" y="214px" fill="#000000">09:00</svg:text>
			</svg:g>
			<svg:g transform="translate(70, 10)">
				<svg:rect x="5px" y="111px" width="25px" height="89px" fill="url(#BarGradient)" stroke="#000000" stroke-width="1px" />
				<svg:text x="0px" y="214px" fill="#000000">10:00</svg:text>
			</svg:g>
			<svg:g transform="translate(110, 10)">
				<svg:rect x="5px" y="133px" width="25px" height="67px" fill="url(#BarGradient)" stroke="#000000" stroke-width="1px" />
				<svg:text x="0px" y="214px" fill="#000000">11:00</svg:text>
			</svg:g>
			<svg:g transform="translate(150, 10)">
				<svg:rect x="5px" y="67px" width="25px" height="133px" fill="url(#BarGradient)" stroke="#000000" stroke-width="1px" />
				<svg:text x="0px" y="214px" fill="#000000">12:00</svg:text>
			</svg:g>
			<svg:g transform="translate(190, 10)">
				<svg:rect x="5px" y="0px" width="25px" height="200px" fill="url(#BarGradient)" stroke="#000000" stroke-width="1px" />
				<svg:text x="0px" y="214px" fill="#000000">13:00</svg:text>
			</svg:g>
			<svg:g transform="translate(230, 10)">
				<svg:rect x="5px" y="178px" width="25px" height="22px" fill="url(#BarGradient)" stroke="#000000" stroke-width="1px" />
				<svg:text x="0px" y="214px" fill="#000000">14:00</svg:text>
			</svg:g>
			<svg:g transform="translate(270, 10)">
				<svg:rect x="5px" y="22px" width="25px" height="178px" fill="url(#BarGradient)" stroke="#000000" stroke-width="1px" />
				<svg:text x="0px" y="214px" fill="#000000">15:00</svg:text>
			</svg:g>
			<svg:g transform="translate(310, 10)">
				<svg:rect x="5px" y="133px" width="25px" height="67px" fill="url(#BarGradient)" stroke="#000000" stroke-width="1px" />
				<svg:text x="0px" y="214px" fill="#000000">16:00</svg:text>
			</svg:g>
		</svg:g>
	</svg:svg>
	
	<h2>Source of this page:</h2>
	<pre class="source"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php&nbsp;<br /><br /></span><span style="color: #FF8000">/**<br />&nbsp;*&nbsp;Render&nbsp;SVG&nbsp;embedded&nbsp;in&nbsp;XHTML&nbsp;using&nbsp;PHP&nbsp;-&nbsp;simple&nbsp;sample<br />&nbsp;*&nbsp;<br />&nbsp;*&nbsp;This&nbsp;file&nbsp;is&nbsp;a&nbsp;simple&nbsp;example&nbsp;of&nbsp;how&nbsp;SVG&nbsp;can&nbsp;be&nbsp;emedded&nbsp;into&nbsp;XHTML&nbsp;and&nbsp;<br />&nbsp;*&nbsp;rendered&nbsp;using&nbsp;PHP.&nbsp;It&nbsp;is&nbsp;provided&nbsp;as&nbsp;is,&nbsp;without&nbsp;any&nbsp;kind&nbsp;of&nbsp;guarantees<br />&nbsp;*&nbsp;to&nbsp;work&nbsp;or&nbsp;waranties&nbsp;of&nbsp;any&nbsp;kind.&nbsp;&nbsp;<br />&nbsp;*&nbsp;<br />&nbsp;*&nbsp;@author&nbsp;&nbsp;Shahar&nbsp;Evron,&nbsp;shahar.evron@gmail.com<br />&nbsp;*/<br /><br /></span><span style="color: #0000BB">date_default_timezone_set</span><span style="color: #007700">(</span><span style="color: #DD0000">'Europe/Berlin'</span><span style="color: #007700">);<br /><br />require_once&nbsp;</span><span style="color: #DD0000">'Zend/Feed.php'</span><span style="color: #007700">;<br />require_once&nbsp;</span><span style="color: #DD0000">'Zend/Cache.php'</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">//&nbsp;Set&nbsp;up&nbsp;cache&nbsp;<br /></span><span style="color: #0000BB">$frontendOpts&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">'lifetime'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">1800</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'automaticSerialization'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$backendOpts&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">'cacheDir'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'/tmp'</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$cache&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Zend_Cache</span><span style="color: #007700">::</span><span style="color: #0000BB">factory</span><span style="color: #007700">(</span><span style="color: #DD0000">'Core'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'File'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$frontendOpts</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$backendOpts</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">//&nbsp;Read&nbsp;RSS&nbsp;feed&nbsp;from&nbsp;digg.com&nbsp;and&nbsp;put&nbsp;statistics&nbsp;into&nbsp;an&nbsp;array<br />//&nbsp;Load&nbsp;feed&nbsp;from&nbsp;cache&nbsp;or&nbsp;directly<br /></span><span style="color: #007700">if&nbsp;(!&nbsp;</span><span style="color: #0000BB">$pubs&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">unserialize</span><span style="color: #007700">(</span><span style="color: #0000BB">$cache</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">load</span><span style="color: #007700">(</span><span style="color: #DD0000">'diggfeed'</span><span style="color: #007700">)))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$feed&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Zend_Feed</span><span style="color: #007700">::</span><span style="color: #0000BB">import</span><span style="color: #007700">(</span><span style="color: #DD0000">'http://digg.com/rss/index.xml'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$pubs&nbsp;</span><span style="color: #007700">=&nbsp;array();<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #0000BB">$feed&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$item</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;@var&nbsp;$item&nbsp;Zend_Feed_EntryRss&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$k&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">date</span><span style="color: #007700">(</span><span style="color: #DD0000">'Y-m-d-H'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">strtotime</span><span style="color: #007700">(</span><span style="color: #0000BB">$item</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">pubDate</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">__toString</span><span style="color: #007700">()));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!&nbsp;isset(</span><span style="color: #0000BB">$pubs</span><span style="color: #007700">[</span><span style="color: #0000BB">$k</span><span style="color: #007700">]))&nbsp;</span><span style="color: #0000BB">$pubs</span><span style="color: #007700">[</span><span style="color: #0000BB">$k</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$pubs</span><span style="color: #007700">[</span><span style="color: #0000BB">$k</span><span style="color: #007700">]++;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$pubs&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">array_reverse</span><span style="color: #007700">(</span><span style="color: #0000BB">$pubs</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$cache</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">save</span><span style="color: #007700">(</span><span style="color: #0000BB">serialize</span><span style="color: #007700">(</span><span style="color: #0000BB">$pubs</span><span style="color: #007700">),&nbsp;</span><span style="color: #DD0000">'diggfeed'</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #0000BB">$max&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">max</span><span style="color: #007700">(</span><span style="color: #0000BB">$pubs</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$min&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">min</span><span style="color: #007700">(</span><span style="color: #0000BB">$pubs</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$count&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$factor&nbsp;</span><span style="color: #007700">=&nbsp;(</span><span style="color: #0000BB">200&nbsp;</span><span style="color: #007700">/&nbsp;</span><span style="color: #0000BB">$max</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Content-type:&nbsp;text/xml"</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #DD0000">'&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;?&gt;'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;<br /></span>&lt;!DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br /><br />&lt;html&nbsp;xmlns="http://www.w3.org/1999/xhtml"&nbsp;xmlns:svg="http://www.w3.org/2000/svg"&nbsp;xml:lang="en"&nbsp;lang="en"&gt;<br />&lt;head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;XHTML&nbsp;with&nbsp;embeded&nbsp;SVG&nbsp;test&lt;/title&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;style&nbsp;type="text/css"&gt;&lt;![CDATA[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;{&nbsp;font-family:&nbsp;Verdana,&nbsp;sans-serif;&nbsp;font-size:&nbsp;10pt;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h1,&nbsp;h2&nbsp;{&nbsp;margin:&nbsp;0px&nbsp;2px;&nbsp;padding:&nbsp;0px;&nbsp;border-bottom:&nbsp;1px;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pre&nbsp;{&nbsp;font-size:&nbsp;9pt;&nbsp;padding:&nbsp;2px;&nbsp;border:&nbsp;1px&nbsp;dashed&nbsp;black;&nbsp;background-color:&nbsp;#f0f0f0;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.smallprint&nbsp;{&nbsp;font-size:&nbsp;8pt;&nbsp;padding:&nbsp;0px&nbsp;5px;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;{&nbsp;font-size:&nbsp;8pt;&nbsp;font-family:&nbsp;Georgia,&nbsp;Verdana,&nbsp;sans-serif;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;]]&gt;&lt;/style&gt;<br />&lt;/head&gt;<br /><br />&lt;body&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;Embedding&nbsp;SVG&nbsp;in&nbsp;XHTML&lt;/h1&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;class="smallprint"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shahar&nbsp;Evron&nbsp;&lt;a&nbsp;href="http://prematureoptimization.org/"&gt;http://prematureoptimization.org/&lt;/a&gt;&nbsp;2007-03-25<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;Traditionally,&nbsp;PHP&nbsp;has&nbsp;been&nbsp;used&nbsp;to&nbsp;dynamically&nbsp;generate&nbsp;HTML.&nbsp;Now,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;valid&nbsp;XHTML&nbsp;is&nbsp;common&nbsp;and&nbsp;browsers&nbsp;can&nbsp;render&nbsp;SVG,&nbsp;you&nbsp;could&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;easily&nbsp;embed&nbsp;SVG&nbsp;graphics&nbsp;into&nbsp;your&nbsp;XHTML,&nbsp;and&nbsp;that&nbsp;graphic&nbsp;could&nbsp;be&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dynamically&nbsp;generated&nbsp;by&nbsp;PHP.&lt;/p&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;The&nbsp;following&nbsp;graph&nbsp;shows&nbsp;the&nbsp;number&nbsp;of&nbsp;news&nbsp;posts&nbsp;per&nbsp;hour&nbsp;in&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;a&nbsp;href="http://digg.com"&gt;digg.com&lt;/a&gt;&nbsp;from&nbsp;the&nbsp;last&nbsp;hours.&nbsp;It&nbsp;is&nbsp;a<br />&nbsp;&nbsp;&nbsp;&nbsp;dynamically&nbsp;generated&nbsp;SVG&nbsp;image&nbsp;created&nbsp;by&nbsp;PHP&nbsp;(data&nbsp;is&nbsp;cached&nbsp;for&nbsp;30&nbsp;minutes):&lt;/p&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #FF8000">//&nbsp;Some&nbsp;definitions<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$xStart&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">30</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$yBase&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">210</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$totalWidth&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$pubs</span><span style="color: #007700">)&nbsp;*&nbsp;</span><span style="color: #0000BB">40&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">$xStart&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">10</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:svg&nbsp;width="100%"&nbsp;height="280"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;some&nbsp;defs&nbsp;--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:defs&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:linearGradient&nbsp;id="BarGradient"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:stop&nbsp;offset="0%"&nbsp;stop-color="#F60"&nbsp;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:stop&nbsp;offset="100%"&nbsp;stop-color="#FF6"&nbsp;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/svg:linearGradient&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/svg:defs&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:g&nbsp;transform="translate(5,&nbsp;5)"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;frame&nbsp;--&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:rect&nbsp;x="1px"&nbsp;y="1px"&nbsp;width="<span style="color: #0000BB">&lt;?=&nbsp;$totalWidth&nbsp;?&gt;</span>px"&nbsp;height="235px"&nbsp;fill="none"&nbsp;stroke="#000"&nbsp;stroke-width="1px"&nbsp;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;y&nbsp;grid&nbsp;--&gt;<br /><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">for(</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">&lt;=&nbsp;</span><span style="color: #0000BB">$max</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$i</span><span style="color: #007700">++):&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:g&nbsp;transform="translate(5,&nbsp;<span style="color: #0000BB">&lt;?=&nbsp;$yBase&nbsp;</span><span style="color: #007700">-&nbsp;(</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">*&nbsp;(</span><span style="color: #0000BB">200&nbsp;</span><span style="color: #007700">/&nbsp;</span><span style="color: #0000BB">$max</span><span style="color: #007700">))&nbsp;</span><span style="color: #0000BB">?&gt;</span>)"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:path&nbsp;d="M&nbsp;<span style="color: #0000BB">&lt;?=&nbsp;$xStart&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">5&nbsp;?&gt;</span>&nbsp;0&nbsp;L&nbsp;<span style="color: #0000BB">&lt;?=&nbsp;$totalWidth&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">10&nbsp;?&gt;</span>&nbsp;0&nbsp;z"&nbsp;fill="none"&nbsp;stroke="#999"&nbsp;stroke-dasharray="3,3"&nbsp;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:text&nbsp;align="right"&nbsp;y="5"&nbsp;x="10"&gt;<span style="color: #0000BB">&lt;?=&nbsp;$i&nbsp;?&gt;</span>&lt;/svg:text&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/svg:g&gt;<br /><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">endfor;&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;x&nbsp;/&nbsp;y&nbsp;axis&nbsp;--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:path&nbsp;d="M&nbsp;<span style="color: #0000BB">&lt;?=&nbsp;$xStart&nbsp;?&gt;</span>&nbsp;<span style="color: #0000BB">&lt;?=&nbsp;$yBase&nbsp;?&gt;</span>&nbsp;L&nbsp;<span style="color: #0000BB">&lt;?=&nbsp;$totalWidth&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">10&nbsp;?&gt;</span>&nbsp;<span style="color: #0000BB">&lt;?=&nbsp;$yBase&nbsp;?&gt;</span>&nbsp;z"&nbsp;fill="none"&nbsp;stroke="#000"&nbsp;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:path&nbsp;d="M&nbsp;<span style="color: #0000BB">&lt;?=&nbsp;$xStart&nbsp;?&gt;</span>&nbsp;10&nbsp;L&nbsp;<span style="color: #0000BB">&lt;?=&nbsp;$xStart&nbsp;?&gt;</span>&nbsp;<span style="color: #0000BB">&lt;?=&nbsp;$yBase&nbsp;?&gt;</span>&nbsp;z"&nbsp;fill="none"&nbsp;stroke="#000"&nbsp;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;bars&nbsp;--&gt;<br /><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">foreach&nbsp;(</span><span style="color: #0000BB">$pubs&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$time&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$v</span><span style="color: #007700">):&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$v&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">round</span><span style="color: #007700">(</span><span style="color: #0000BB">$v&nbsp;</span><span style="color: #007700">*&nbsp;</span><span style="color: #0000BB">$factor</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:g&nbsp;transform="translate(<span style="color: #0000BB">&lt;?=&nbsp;$xStart&nbsp;</span><span style="color: #007700">+&nbsp;(</span><span style="color: #0000BB">$count</span><span style="color: #007700">++&nbsp;*&nbsp;</span><span style="color: #0000BB">40</span><span style="color: #007700">)</span><span style="color: #0000BB">?&gt;</span>,&nbsp;10)"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:rect&nbsp;x="5px"&nbsp;y="<span style="color: #0000BB">&lt;?=&nbsp;200&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">$v&nbsp;?&gt;</span>px"&nbsp;width="25px"&nbsp;height="<span style="color: #0000BB">&lt;?=&nbsp;$v&nbsp;?&gt;</span>px"&nbsp;fill="url(#BarGradient)"&nbsp;stroke="#000000"&nbsp;stroke-width="1px"&nbsp;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;svg:text&nbsp;x="0px"&nbsp;y="214px"&nbsp;fill="#000000"&gt;<span style="color: #0000BB">&lt;?=&nbsp;substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$time</span><span style="color: #007700">,&nbsp;-</span><span style="color: #0000BB">2</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #DD0000">":00"&nbsp;</span><span style="color: #0000BB">?&gt;</span>&lt;/svg:text&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/svg:g&gt;<br /><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">endforeach;&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/svg:g&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/svg:svg&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;h2&gt;Source&nbsp;of&nbsp;this&nbsp;page:&lt;/h2&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;pre&nbsp;class="source"&gt;<span style="color: #0000BB">&lt;?php&nbsp;highlight_file</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">);&nbsp;</span><span style="color: #0000BB">?&gt;</span>&lt;/pre&gt;<br />&lt;/body&gt;<br /><br />&lt;/html&gt;<br /></span>
</code></pre>
</body>

</html>
