übereinstimmen Ich habe eine Inkscape-Svg-Datei.wie Knoten und Kind-Knoten (gleicher Name) in xsl: Vorlage
vereinfachte Version:
<svg>
<g inkscape:label="layerA">
<g inkscape:label="layerB"/>
</g>
<g inkscape:label="layerC">
<g inkscape:label="layerD"/>
</g>
</svg>
Ich möchte ein um die Schichten extrahieren (und B), und D.
Das für die Schicht A arbeitet, die direkt unter dem Wurzelelement ist.
<?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"
>
<!-- Auto intend -->
<xsl:output indent="yes"/>
<!-- Copy every other node, element, attribute -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- Do not copy any other group -->
<xsl:template match="svg:g"/>
<!-- Copy all matching groups -->
<xsl:template match="svg:g[@inkscape:label='layerA']|svg:g[@inkscape:label='layerD']">
<xsl:copy-of select="."/>
</xsl:template>
Aber es Schicht D. meine Frage nicht kopieren
So ist: Wie kann ich direkt unter root nicht nur die Knoten entsprechen, aber unter einem anderen "g" Elemente.
Ihre "vereinfachte" Version der Eingabe ist kein wohlgeformtes XML und stimmt nicht mit Ihrem Stylesheet überein - was die Reproduktion Ihres Problems erschwert. –