通过xslt导出inkscape svg的多个(嵌套)层

时间:2016-06-01 20:25:32

标签: xml xslt svg inkscape

我想从inkscape svg中导出多个页面。

结构如下: 像:

  • 背景
    • 层1.
      • 层1
      • 二层
    • layerB
      • 三层
      • layer4

还有更多(子)组,因为我导入了已经拥有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层不匹配。 :(

0 个答案:

没有答案