Sé que este es un caso límite si realmente pertenece a stackoverflow o superusuario, pero parece que hay bastantes preguntas de 'código de edición' sobre aquí, lo estoy publicando en SO.Cómo obtener un XML plano para que las entidades externas se combinen con el nivel superior
Tengo una pila de archivos XML que alguien en su sabiduría infinita ha decidido explotar en varios archivos usando las etiquetas, lo que en consecuencia hace que depurar/editarlos sea un gran P-i-t-A. Por lo tanto estoy buscando:
- Un modo en VIM para abrirlos en un solo búfer (preferiblemente para que los cambios se guarden en archivos correctos de entidades externas), O;
- Una forma de expandir los archivos en VIM para que las entidades externas se lean y reemplacen en el búfer, O;
- un fácil bash/sed manera/pitón de hacer esto en una línea de comandos (o en .vimrc)
Los archivos incluidos en el nivel superior podría incluir nuevos archivos y así sucesivamente en quién sabe de cuántos niveles por lo que este necesita ser recursivo ...
He aquí una muestra maqueta de lo que el archivo de nivel superior se parece a:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foobar PUBLIC "foobar:dtd" "foobar.dtd" [
<!ENTITY foo SYSTEM "foo.xml">
<!ENTITY bar SYSTEM "bar.xml">
]>
<foo>
<params>
&foo;
</params>
<bar>
&bar;
</bar>
</foo>
EDITAR: la lista está en orden de preferencia - Si no hay puntos 1 o 2 soluciones están disponibles, la recompensa va para el mejor # 3 ...
EDIT 2: Parece que @Gaby 's obras respuesta, pero lamentablemente sólo en parte, a menos que esté haciendo algo mal - escribiré algún tipo de herramienta usando su respuesta y la publicaré aquí para mejoras. Por supuesto, una solución # 1 o # 2 sería apreciada ... :)
EDITAR 3: Ok, lo mejor no Emacs -Respuesta recibirá la recompensa;)
Conclusión : Gracias a @hcayless ahora tengo una solución de trabajo # 2, añadí:
autocmd BufReadPost,FileReadPost *.xml silent %!xmllint --noent - 2> /dev/null
a mi .vimrc
y todo es miel sobre hojuelas.
¿Podría hacerse esto con xslt? – michael
No había visto esto antes, pero aparentemente es una parte honesta de bondad de XML. http://www.xml.com/pub/a/98/08/xmlqna2.html es una explicación que encontré para ello. – MikeSep
Sí, es válido y, por lo tanto, dos veces más molesto :) – Kimvais