我们喜欢将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“清理器”的潜力是什么?
答案 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标准属性也会被剥离。