我想从inkscape svg中导出多个页面。
结构如下: 像:
还有更多(子)组,因为我导入了已经拥有svg:g节点的其他svg对象。
我想导出一个带背景和图层A(包括子图层)的png和一个带背景和图层3(包括子图层)的png。
我尝试了这里描述的方式:http://daniel-albuschat.blogspot.de/2013/03/export-layers-from-svg-files-to-png.html(第二个例子)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="svg:g"/>
<xsl:template match="svg:g[@inkscape:label='background']|svg:g[@inkscape:label='layerA']|svg:g[@inkscape:label='layer3']">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
但我只在所选图层下直接获取对象。 其他svg:g中的所有内容都不会被复制。 我希望复制所选图层下的所有内容。
我该怎么做?
感谢您的帮助
------ ----- EDIT
我想我离目标越来越近了。
而不是:
<xsl:template match="svg:g[@inkscape:label='background']|svg:g[@inkscape:label='layerA']|svg:g[@inkscape:label='layer3']">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
我用这个:
<xsl:template match="svg:g[@inkscape:label='background']|svg:g[@inkscape:label='layerA']|svg:g[@inkscape:label='layer3']">
<xsl:copy-of select="@*|node()"/>
</xsl:template>
现在,subildren被复制为希望。 但是组元素本身就缺失了。
------ ------ EDIT2 现在使用:
<xsl:copy-of select="."/>
只有它与子子级别的组不匹配。
我想我需要这样的东西(注意&#34; //&#34;):
<xsl:template match="//svg:g[@inkscape:label='layer3']">
<xsl:copy-of select="."/>
</xsl:template>
但它与第3层不匹配。 :(