从外壳程序向XML文档的默认名称空间的标签添加名称空间前缀。

皮埃尔·弗朗索瓦(Pierre Francois)

我有一个SVG文件,它是一个XML文档:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
  <defs
     id="defs2">
  <!-- a lot of stuff --> </defs>
  <!-- more stuff like -->
  <metadata
     id="metadata5">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <!-- etc... -->
</svg>

我想将svg:前缀添加到与默认名称空间相对应的所有标签中,以获取下一个输出:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg:svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
  <svg:defs
     id="defs2">
  <!-- a lot of stuff--> </svg:defs>
  <!-- more stuff like -->
  <svg:metadata
     id="metadata5">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title />
      </cc:Work>
    </rdf:RDF>
  </svg:metadata>
  <!-- etc... -->
</svg:svg>

我确信使用xmllint和/或xmlstarlet在外壳程序中的一个或几个命令行中可以做到这一点,但我无法管理它。

迈克尔·凯

您准备尝试使用Saxon 10.0中的新Gizmo工具吗?如果是这样的话:

使用以下命令调用Gizmo:

java -cp saxon-he-10.0.jar:jline-2.9.jar net.sf.saxon.Gizmo

然后输入子命令

load x/y/z/input.xml
namespace svg http://www.w3.org/2000/svg
rename /*:svg as "svg:svg"
save x/y/z/output.xml
quit

文档位于http://www.saxonica.com/documentation/index.html#!gizmo

请注意,这是一个非常新的软件(仅在星期一首次发布),因此您处于最新趋势...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章