为<image xlink:href =“something.svg”> </image> </svg>编写等效的<svg>

时间:2011-05-08 04:27:33

标签: map svg inkscape

如果您想知道为什么这是必要的,或者想要提出更好的方法来解决更大的问题,请随时询问更多背景信息。 (它涉及在校园地图上铺设一堆建筑平面图,并找到这些建筑地图中某些东西的绝对位置;更多细节正在扼杀这个问题。)

简短版本是我想要一个SVG文件,其中包含&lt; image xlink:href =“something.svg”/&gt;引用并将其合并到一个大文件中,每个引用的SVG都嵌入了&lt; svg&gt;和内联SVG XML内容。

因此,我的顶级源文件(由Inkscape组成)如下所示:

<image xlink:href="floorplans/bldg1.svg"
width="165.52684" height="107.10559" y="-1937.7657"
x="2507.1565" transform="matrix(0,1,-1,0,0,0)" />

我尝试在合并版本中内联所有矢量数据:

<svg x="2507.1565" y="-1937.7657" width="165.52684" height="107.10559"
transform="matrix(0,1,-1,0,0,0)" viewBox="0 0 1224 792">
<g id="surface0">
<path style="fill:none;stroke-width:0.72;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);...

所以,基本上我正在使用脚本替换&lt; image&gt;与&lt; svg&gt;并粘贴在根&lt; svg&gt;的内容中“floorplans / bldg1.svg”。 (将&lt; image&gt;中的属性复制到&lt; svg&gt;,并将viewBox属性从原始&lt; svg&gt;复制到新的。)

此技术适用于未旋转的内容,但Chrome似乎在说这个特定元素不在视口的顶部。我是SVG的新手,但我认为&lt; svg&gt;上的转换顺序并不相同。因为它在&lt; image&gt;上。我是否犯了一个愚蠢的错误,我没有发现,或者是否有更多参与转换&lt; image xlink:href =“something.svg”transform = ... /&gt;到&lt; svg&gt;使用内联XML?

感谢。

1 个答案:

答案 0 :(得分:2)

transform属性不适用于&lt; svg&gt;元素根据SVG规范。您可以放置​​&lt; image&gt;上的转换。 &lt; g&gt;上的元素元素在&lt; svg&gt;之外或之内代替。

转换行为的原因是&lt; svg&gt; element设置坐标系,变换取决于那个(如果确实应用会出现的问题是“在svg坐标系设置之前或之后是否应该在坐标空间中解释变换?”)