так вроде бы правильнее, только работать перестало
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" baseProfile="full" id="svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<script type="text/ECMAScript" language="javascript">
var parser = new DOMParser(), conteiner = parser.parseFromString('\
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">\
<g>\
<rect width="100%" height="100%" fill="red" />\
<circle cx="150" cy="100" r="80" fill="green" />\
<text x="150" y="125" font-size="60" text-anchor="middle" fill="white">SVG</text>\
</g>\
</svg>\
', 'text/xml').documentElement.firstElementChild;
document.addEventListener('DOMContentLoaded', function(){
alert(document.getElementById('main'))
document.getElementById('main').appendChild(conteiner);
}, false)
</script>
<g id="main">
<rect width="300" height="100"
style="fill:rgb(0,0,255);stroke-width:1;
stroke:rgb(0,0,0)"/>
</g>
</svg>