gpt4 book ai didi

xml - SVG/XML : Remove unwanted XML/SVG www. w3.org/2000/svg 标签?

转载 作者:行者123 更新时间:2023-12-02 17:52:47 25 4
gpt4 key购买 nike

我们喜欢将 SVG 代码与 JQuery 模板混合在一起。当我们从 Adob​​e 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“清理器”的潜力吗?

最佳答案

如果您可以使用 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标准属性也会被删除。

关于xml - SVG/XML : Remove unwanted XML/SVG www. w3.org/2000/svg 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6003626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com