SVG / XML:删除不需要的XML / SVG www.w3.org/2000/svg标签?

时间:2011-05-14 17:35:01

标签: xml html5 svg minify

我们喜欢将SVG代码与JQuery模板混合使用。当我们从Adobe Illustrator或Inkscape保存SVG图形时,它们不仅仅具有xmlns="http://www.w3.org/2000/svg"命名空间标记,具有专有的“提示”或将在HTML 5浏览器中忽略的代码。

我们想在Inkscape中创建图形,然后使用它们而不必手动挑选不需要的,忽略的标签,甚至可能格式化它们。

是否有代码可以删除或缩小这些程序根据xmlns="http://www.w3.org/2000/svg"生成的不合规svg标记?

我们将使用ASP.NET MVC 3使用JQuery .ajax调用来提供这些模板,因此基于命名空间的C#XML“清理器”的潜力是什么?

2 个答案:

答案 0 :(得分:3)

查看Jeff Schiller的工具Scour:http://www.codedread.com/scour/

答案 1 :(得分:2)

如果可以使用XSLT,则以下转换将删除不在SVG名称空间中的所有元素:

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                xmlns:svg="http://www.w3.org/2000/svg">

<!-- Any element matching svg namespace is copied. -->
<xsl:template match="svg:*">
  <xsl:copy>
    <xsl:copy-of select="@*[namespace-uri()='']"/>
    <xsl:apply-templates select="node()"/>
  </xsl:copy>
</xsl:template>

<!-- Default: Exclude element -->
<xsl:template match="*"/>

</xsl:stylesheet>

需要小心谨慎处理属性。一些SVG编辑软件会添加其他属性,因此当我们复制属性时,我们只会复制那些默认命名空间,因此非SVG标准属性也会被剥离。