如何编写XSLT模板以从 SVG 文件中的font-family
或<g>
标签中删除<text>
属性?
<text font-family="ComicRelief, ComicRelief" transform="translate(14.17 51.75)">S tars</text>
<g font-family="ComicRelief-Bold, ComicRelief Bold" font-weight="700">
答案 0 :(得分:1)
除了利用匹配所有节点的模板并复制它们之外,还创建一个与font-family
属性匹配的 empty 模板,仅当它们与g
关联或text
个元素节点。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:svg="http://www.w3.org/2000/svg">
<xsl:template match="svg:g/@font-family | svg:text/@font-family"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
注释:
SVG文件具有名称空间,需要在样式表中声明它们,即xmlns:svg="http://www.w3.org/2000/svg
然后分别使用g
和text
分别引用svg:g
和svg:text
元素节点。
答案 1 :(得分:0)
请考虑以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<text font-family="ComicRelief, ComicRelief" transform="translate(14.17 51.75)">S tars</text>
<g font-family="ComicRelief-Bold, ComicRelief Bold" font-weight="700"/>
</Root>
您可以从不同的xml标记中删除相同的命名属性,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*/@font-family"/>
应渲染到SVG文件。 您可以参考转换here