Добавьте префикс пространства имен в теги пространства имен по умолчанию для документа XML из оболочки - PullRequest
0 голосов
/ 20 марта 2020

У меня есть файл 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 , но я не могу это сделать.

1 Ответ

0 голосов
/ 21 марта 2020

Готовы ли вы попробовать новый инструмент Gizmo в Saxon 10.0? Если это так:

Вызовите 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

Имейте в виду, что это очень новое программное обеспечение (впервые выпущено в понедельник), поэтому вы находитесь на переднем крае ...

...