这些是SVG元素,SVG文档的供应商添加了我们不能使用但不想要的各种扩展。所以我希望删除这些扩展属性。
我基本上使用身份变换。我想要这个元素:
<text id="1"
i:knockout="Off"
i:objectType="pointText"
style="font-size:16;"
>Hi</text>
复制为
<text id="1" style="font-size:16;">Hi</text>
任何帮助表示感谢。
修改
不幸的是,我上面选择的例子不是真实的。这个是:
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
i:viewOrigin="-39.4106 906.6265" i:rulerOrigin="0 0" i:pageBounds="0 840 592 0" >
<g i:extraneous="self">
</g>
</svg>
我想要的是:
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg"
>
<g>
</g>
</svg>
答案 0 :(得分:0)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<xsl:element name="{name()}" namespace="{namespace-uri()}">
<xsl:copy-of select=
"namespace::*[not(.='i:i')]"/>
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*[namespace-uri()='i:i']"/>
<xsl:template match="@*">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档时:
<text id="1" xmlns:i="i:i"
i:knockout="Off"
i:objectType="pointText"
style="font-size:16;">Hi</text>
会产生想要的正确结果:
<text id="1" style="font-size:16;">Hi</text>
UPDATE :OP现在已经指定了绑定前缀"i"
的确切命名空间。
在这种情况下,"i:i"
与http://ns.adobe.com/AdobeIllustrator/10.0/
的简单替换为我们提供了新的解决方案:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pUnwantedNS" select="'http://ns.adobe.com/AdobeIllustrator/10.0/'"/>
<xsl:template match="*">
<xsl:element name="{name()}" namespace="{namespace-uri()}">
<xsl:copy-of select="namespace::*[not(.=$pUnwantedNS)]"/>
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match=
"@*[namespace-uri()='http://ns.adobe.com/AdobeIllustrator/10.0/']"/>
</xsl:stylesheet>
,当应用于新提供的XML文档时:
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
i:viewOrigin="-39.4106 906.6265"
i:rulerOrigin="0 0"
i:pageBounds="0 840 592 0" >
<g i:extraneous="self"></g>
</svg>
再次生成想要的正确结果:
<svg xmlns="http://www.w3.org/2000/svg">
<g />
</svg>