【发布时间】:2015-01-25 06:16:01
【问题描述】:
我在 Inkscape 中构建了以下 SVG,您可以看到它缺少 SVG 命名空间:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="1000" height="715" id="svg2" p1:version="0.32" p2:version="0.46" version="1.0" p2:output_extension="org.inkscape.output.svg.inkscape" xmlns:p1="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:p2="http://www.inkscape.org/namespaces/inkscape">
<defs id="defs4">
<perspective p1:type="inkscape:persp3d" p2:vp_x="0 : 526.18109 : 1" p2:vp_y="0 : 1000 : 0" p2:vp_z="744.09448 : 526.18109 : 1" p2:persp3d-origin="372.04724 : 350.78739 : 1" id="perspective10" />
<perspective id="perspective2447" p2:persp3d-origin="372.04724 : 350.78739 : 1" p2:vp_z="744.09448 : 526.18109 : 1" p2:vp_y="0 : 1000 : 0" p2:vp_x="0 : 526.18109 : 1" p1:type="inkscape:persp3d" />
<perspective id="perspective3327" p2:persp3d-origin="372.04724 : 350.78739 : 1" p2:vp_z="744.09448 : 526.18109 : 1" p2:vp_y="0 : 1000 : 0" p2:vp_x="0 : 526.18109 : 1" p1:type="inkscape:persp3d" />
</defs>
<namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" gridtolerance="10000" guidetolerance="10" objecttolerance="10" p2:pageopacity="0.0" p2:pageshadow="2" p2:zoom="7" p2:cx="324.34286" p2:cy="238.59584" p2:document-units="px" p2:current-layer="svg2" showgrid="false" p2:window-width="1020" p2:window-height="718" p2:window-x="0" p2:window-y="14" />
<metadata id="metadata7">
<RDF>
<Work p6:about="" xmlns:p6="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<format>image/svg+xml</format>
<type p6:resource="http://purl.org/dc/dcmitype/StillImage" />
</Work>
</RDF>
</metadata>
<rect style="opacity:0.92000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00288939;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect2473" width="172.33044" height="88.997108" x="419.00143" y="315.00143" rx="0.30000001" ry="0.30000001" />
</svg>
以下 XSLT 转换用于剥离所有不必要的信息:
<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>
运行 XSLT 转换时,它会生成空 XML,因为据我了解,根节点中缺少 SVG 命名空间。
所以我的问题是是否有可能以某种方式解决这个问题?我确实尝试将命名空间添加到文档的根节点,但它没有帮助。
谢谢
【问题讨论】:
-
您能告诉我们转换的预期结果吗?
-
这首先不能验证为 svg,在 svg 中没有名为
<namedview>或<perspective>的元素。