Embed SVG in SVG? Embed SVG in SVG? xml xml

Embed SVG in SVG?


Use the image element and reference your SVG file. For fun, save the following as recursion.svg:

<svg width="100%" height="100%" viewBox="-100 -100 200 200" version="1.1"     xmlns="http://www.w3.org/2000/svg">  <circle cx="-50" cy="-50" r="30" style="fill:red" />  <image x="10" y="20" width="80" height="80" href="recursion.svg" /></svg>


Or you can actually embed child svg in parent svg like this:

<svg>    <g>        <svg>            ...        </svg>    </g></svg>

demo:
http://hitokun-s.github.io/old/demo/path-between-two-svg.html


It is worth mentioning that when you embed SVGs into another SVG with:

<image x="10" y="20" width="80" height="80" xlink:href="image.svg" />

then the embedded SVG takes a rectangular shape with given dimensions.

That is to say, if your embedded SVG is a circle or some shape other than a square, then it becomes a square with transparency. Therefore, mouse events get trapped into that embeded square and do not reach the parent SVG. Watch out for that.

A better approach is using a pattern. To fill a shape, either a circle, a square or even a path.

<defs> <pattern id="pat" x="0" y="0" width="500" height="500" patternUnits="userSpaceOnUse">   <image x="0" y="0" width="500" height="500" xlink:href="images/mysvg.svg"></image> </pattern></defs>

Then use the pattern like this:

<circle cx="0" cy="0" r="250" fill="url(#pat)"></circle>

Now your mouse events do not get stuck into transparent image squares!