2008-09-23 24 views
22

He visto Best tools for working with DocBook XML documents, pero mi pregunta es un poco diferente. ¿Cuál es la cadena de herramientas de formato actualmente recomendada, en comparación con la herramienta de edición, para XML DocBook?¿Cuál es la cadena de herramientas recomendada para formatear XML DocBook?

En Eric Raymond's 'The Art of Unix Programming' de 2003 (¡un excelente libro!), La sugerencia es XML-FO (XML Formatting Objects), pero he visto sugerencias aquí que indicaban que XML-FO ya no está en desarrollo (aunque Ya no puedo encontrar esa pregunta en StackOverflow, así que tal vez fue errónea).

Supongamos que estoy interesado principalmente en Unix/Linux (incluido MacOS X), pero no ignoraría automáticamente las soluciones solo de Windows.

¿Es Apache's FOP la mejor manera de proceder? ¿Hay alguna alternativa?

+0

"Formateando" ¿a qué? PDF? HTML? – bortzmeyer

+0

PDF, HTML serían los dos formatos principales, no estoy seguro de si ODF tiene algún sentido. El texto también sería útil en ocasiones. Dado que varias de las cadenas de herramientas sugeridas pasan por Latex, eso no presenta ningún problema. Estoy pensando en migrar un libro viejo escrito usando troff (y pic, y tbl, y eqn - y un preprocesador personalizado para ejercicios - preguntas solo en el capítulo, pregunta y respuesta en el apéndice) a DocBook.También páginas de manual para una variedad de programas y otra documentación del programa. –

Respuesta

13

He estado haciendo algo de escritura manual con DocBook, en cygwin, para producir una página HTML, muchas páginas HTML, CHM y PDF.

He instalado el siguiente:

  1. docbook El repositorio de hojas de estilo (XSL).
  2. xmllint, para comprobar si el xml es correcto.
  3. xsltproc, para procesar el xml con las hojas de estilo.
  4. Apache's fop, para producir PDF 's. Asegúrese de agregar la carpeta instalada a la RUTA.
  5. Microsoft HTML Help Workshop, para producir CHM. Me aseguro de agregar la carpeta instalada a la RUTA.

Editar: En el siguiente código estoy utilizando más de los 2 archivos. Si alguien quiere una versión limpia de los guiones y la estructura de carpetas, por favor, póngase en contacto conmigo: guscarreno (serpenteante/a) googlemail (periodo/punto) com

entonces utilizo un configure.in:

AC_INIT(Makefile.in) 

FOP=fop.sh 
HHC=hhc 
XSLTPROC=xsltproc 

AC_ARG_WITH(fop, [ --with-fop Where to find Apache FOP], 
[ 
    if test "x$withval" != "xno"; then 
     FOP="$withval" 
    fi 
] 
) 
AC_PATH_PROG(FOP, $FOP) 

AC_ARG_WITH(hhc, [ --with-hhc Where to find Microsoft Help Compiler], 
[ 
    if test "x$withval" != "xno"; then 
     HHC="$withval" 
    fi 
] 
) 
AC_PATH_PROG(HHC, $HHC) 

AC_ARG_WITH(xsltproc, [ --with-xsltproc Where to find xsltproc], 
[ 
    if test "x$withval" != "xno"; then 
     XSLTPROC="$withval" 
    fi 
] 
) 
AC_PATH_PROG(XSLTPROC, $XSLTPROC) 

AC_SUBST(FOP) 
AC_SUBST(HHC) 
AC_SUBST(XSLTPROC) 

HERE=`pwd` 
AC_SUBST(HERE) 
AC_OUTPUT(Makefile) 

cat > config.nice <<EOT 
#!/bin/sh 
./configure \ 
    --with-fop='$FOP' \ 
    --with-hhc='$HHC' \ 
    --with-xsltproc='$XSLTPROC' \ 

EOT 
chmod +x config.nice 

y una Makefile.in:

[email protected]@ 
[email protected]@ 
[email protected]@ 
[email protected]@ 

# Subdirs that contain docs 
DOCS=appendixes chapters reference 

XML_CATALOG_FILES=./build/docbook-xsl-1.71.0/catalog.xml 
export XML_CATALOG_FILES 

all: entities.ent manual.xml html 

clean: 
@echo -e "\n=== Cleaning\n" 
@-rm -f html/*.html html/HTML.manifest pdf/* chm/*.html chm/*.hhp chm/*.hhc chm/*.chm entities.ent .ent 
@echo -e "Done.\n" 

dist-clean: 
@echo -e "\n=== Restoring defaults\n" 
@-rm -rf .ent autom4te.cache config.* configure Makefile html/*.html html/HTML.manifest pdf/* chm/*.html chm/*.hhp chm/*.hhc chm/*.chm build/docbook-xsl-1.71.0 
@echo -e "Done.\n" 

entities.ent: ./build/mkentities.sh $(DOCS) 
@echo -e "\n=== Creating entities\n" 
@./build/mkentities.sh $(DOCS) > .ent 
@if [ ! -f entities.ent ] || [ ! cmp entities.ent .ent ]; then mv .ent entities.ent ; fi 
@echo -e "Done.\n" 

# Build the docs in chm format 

chm: chm/htmlhelp.hpp 
@echo -e "\n=== Creating CHM\n" 
@echo logo.png >> chm/htmlhelp.hhp 
@echo arrow.gif >> chm/htmlhelp.hhp 
@-cd chm && "$(HHC)" htmlhelp.hhp 
@echo -e "Done.\n" 

chm/htmlhelp.hpp: entities.ent build/docbook-xsl manual.xml build/chm.xsl 
@echo -e "\n=== Creating input for CHM\n" 
@"$(XSLTPROC)" --output ./chm/index.html ./build/chm.xsl manual.xml 

# Build the docs in HTML format 

html: html/index.html 

html/index.html: entities.ent build/docbook-xsl manual.xml build/html.xsl 
@echo -e "\n=== Creating HTML\n" 
@"$(XSLTPROC)" --output ./html/index.html ./build/html.xsl manual.xml 
@echo -e "Done.\n" 

# Build the docs in PDF format 

pdf: pdf/manual.fo 
@echo -e "\n=== Creating PDF\n" 
@"$(FOP)" ./pdf/manual.fo ./pdf/manual.pdf 
@echo -e "Done.\n" 

pdf/manual.fo: entities.ent build/docbook-xsl manual.xml build/pdf.xsl 
@echo -e "\n=== Creating input for PDF\n" 
@"$(XSLTPROC)" --output ./pdf/manual.fo ./build/pdf.xsl manual.xml 

check: manual.xml 
@echo -e "\n=== Checking correctness of manual\n" 
@xmllint --valid --noout --postvalid manual.xml 
@echo -e "Done.\n" 

# need to touch the dir because the timestamp in the tarball 
# is older than that of the tarball :) 
build/docbook-xsl: build/docbook-xsl-1.71.0.tar.gz 
@echo -e "\n=== Un-taring docbook-xsl\n" 
@cd build && tar xzf docbook-xsl-1.71.0.tar.gz && touch docbook-xsl-1.71.0 

para automatizar la producción de las salidas de archivos mencionados anteriormente.

Prefiero usar un enfoque nix para las secuencias de comandos solo porque el conjunto de herramientas es más fácil de encontrar y usar, sin mencionar que es más fácil de encadenar.

2

Con respecto a la pregunta sobre la FOP de Apache: cuando establecimos nuestra cadena de herramientas (similar a lo que sugirió Gustavo) obtuvimos muy buenos resultados utilizando RenderX XEP engine. La salida de XEP parece un poco más pulida, y hasta donde recuerdo, FOP tuvo algunos problemas con las tablas (esto fue hace unos años, esto podría haber cambiado).

3

Las hojas de estilo de DocBook, además de FOP, funcionan bien, pero finalmente decidí usar RenderX, que cubre el estándar más a fondo y tiene algunas bonitas extensiones que las hojas de estilo DocBook aprovechan.

El libro de Bob Stayton, DocBook XSL: The Complete Guide, describe varias cadenas de herramientas alternativas, incluidas las que funcionan en Linux o Windows (casi seguramente también MacOS, aunque no he usado una Mac personalmente).

6

Usamos XMLmind XmlEdit para editar y el plugin de Maven docbkx para crear resultados durante nuestras compilaciones. Para un conjunto de buenas plantillas, eche un vistazo a las que Hibernate o Spring proporcionan.

+0

+1 para el complemento docbkx Maven, proporciona todo lo necesario para trabajar con DocBook de una manera independiente de la plataforma. Es una herramienta excelente incluso si no está trabajando en proyectos de Java. http://code.google.com/p/docbkx-tools –

6

Para salida HTML, utilizo el Docbook XSL stylesheets con el procesador XSLT xsltproc.

Para salida de PDF, uso dblatex, que se traduce a LaTeX y luego uso pdflatex para compilarlo en PDF. (Utilicé Jade, las hojas de estilo y DSSSL jadetex antes.)

+0

¿Cuál fue el motivo para pasar de jadetex a dblatex? Es la calidad mejor? – schoetbi

6

Utilizamos

  • Serna XML Editor
  • Eclipse (edición normal xml, mayormente utilizado por los técnicos)
  • propia específica Eclipse plug en (sólo para nuestros release-notes)
  • Maven docbkx plug-in
  • frasco
  • Maven con la hoja de estilo corporativo específico, basado en las hojas de estilo DocBook estándar
  • Maven plug-in para convertir CSV a la mesa DocBook
  • Maven plug-in para extraer datos Bugzilla y la creación de una sección de DocBook de ella
  • Hudson (para generar el documento PDF (s))
  • Nexus para desplegar los documentos creados PDF

Algunas ideas que tenemos:

Implementar con cada versión del producto no sólo el PDF, pero también el documento DocBook original completa (como lo escribimos en parte y en parte del documento generarlos). Guardar el documento completo de DocBook los hace independientes para los cambios en la configuración del sistema en el futuro. Es decir, si el sistema cambia, a partir del cual se extrajo el contenido (o se lo reemplaza por sistemas diferentes), ya no podríamos generar el contenido exacto. Lo que podría causar un problema, si necesitáramos volver a lanzar (con diferentes hojas de estilo) todo el ranche de productos de los manuales. Igual que con los tarros; estas clases compiladas de Java también se colocan en Nexus (no desea almacenarlas en su SCM); esto también lo haríamos con el documento DocBook generado.

Actualización:

fresca creó un Maven Limpiador HTML Plug-in, lo que hace que sea posible add DocBook content to a Maven Project Site (versión Beta disponible). Los comentarios son bienvenidos a través del foro Open Discussion.

+0

Gracias por la información. –

2

Con FOP obtiene las características que alguien decidió que querían lo suficiente como para implementarlas. Diría que nadie que se tome en serio la publicación lo usa en producción. Estás mucho mejor con RenderX o Antenna House o Arbortext. (Los he usado en los proyectos de implementación de la última década). Depende de los requisitos de su negocio, cuánto desea automatizar y cuáles son las habilidades, el tiempo y los recursos de su equipo. No es solo una cuestión tecnológica.

1

Libero/estoy trabajando en un proyecto de código abierto llamado librería que es un rubygem que instala un pipebook/toolchain Docbook-XSL completo. Incluye todo lo necesario para crear y editar archivos fuente de Docbook y generar diferentes formatos (actualmente pdf y epub, y crece rápidamente).

Mi objetivo es hacer posible pasar de cero a exportar (pdf o lo que sea) de su fuente Docbook en menos de 10 minutos.

El Resumen:

Librería es un marco basado en rubí OSS para la felicidad docbook cadena de herramientas y productividad sostenible. El marco está optimizado para ayudar a los desarrolladores a acelerar rápidamente, permitiéndoles saltar y desarrollar más rápidamente sus flujos de DocBook-to-Output, favoreciendo la convención sobre la configuración, configurándolas con las mejores prácticas, estándares y herramientas desde el primer momento. .

Aquí está la ubicación joya: https://rubygems.org/gems/bookshop

y el código fuente: https://github.com/blueheadpublishing/bookshop

0

Yo prefiero usar Windows para la mayor parte de mi creación de contenidos (Notepad ++ editor). Publican en Linux es una buena cadena de herramientas para crear una buena estructura de documentación y salidas de procesos. Uso Dropbox (también hay otros servicios para compartir documentos, que deberían funcionar bien en ambas plataformas) en mi máquina con Windows y en la máquina Virtual Linux. Con esta configuración, he podido lograr una combinación que funciona muy bien para mí. Una vez que se completa el trabajo de edición en Windows (que se sincroniza inmediatamente con la máquina Linux), cambio a Linux para ejecutar la creación de publican y crear salidas HTML y PDF, que de nuevo se actualizan en mi carpeta de Windows mediante Dropbox.

+0

Gracias por la información. Como no tengo ninguna máquina con Windows, no me sirve, pero puede ayudar a otros. –

Cuestiones relacionadas