Pergunta

Eu vi Melhores ferramentas para trabalhar com documentos XML DocBook , mas a minha pergunta é um pouco diferente. Que é o conjunto de ferramentas formatação actualmente recomendado - em oposição a ferramenta de edição - para XML DocBook

O Em Eric Raymond 'The Art of Unix Programming' de 2003 ( um excelente livro!), a sugestão é XML-FO (XML formatação Objects), mas eu tenho desde sugestões visto aqui que indicavam que o XML-FO não é mais em desenvolvimento (embora eu já não pode achar que pergunta sobre StackOverflow, então talvez fosse errônea).

Suponha que eu estou interessado principalmente em Unix / Linux (incluindo MacOS X), mas eu não iria ignorar automaticamente o Windows-somente soluções.

FOP de Apache a melhor maneira de ir? Existem alternativas?

Foi útil?

Solução

Eu tenho feito alguma escrita manual com DocBook, sob cygwin, para produzir uma página HTML, muitas páginas HTML, CHM e PDF.

Eu instalei o seguinte:

  1. docbook folhas de estilo (XSL) repositório.
  2. xmllint, para testar se o xml está correto.
  3. xsltproc, para processar o XML com as folhas de estilo.
  4. FOP , para produzir PDF's.I do Apache certifique-se de adicionar a pasta instalada ao caminho.
  5. Microsoft é HTML Help Workshop , para produzir CHM de. I certifique-se de adicionar a pasta instalada para o PATH.

Editar : No código abaixo estou usando mais do que os 2 arquivos. Se alguém quiser uma versão limpa dos scripts e a estrutura da pasta, por favor contacte-me: guscarreno (squiggly / at) googlemail (período / ponto)

Eu, então, usar um 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

e um Makefile.in:

FOP=@FOP@
HHC=@HHC@
XSLTPROC=@XSLTPROC@
HERE=@HERE@

# 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 a produção do acima saídas de arquivos mencionados.

Eu prefiro usar uma abordagem nix ao scripting só porque o conjunto de ferramentas é mais fácil de encontrar e usar, para não mencionar mais fácil de cadeia.

Outras dicas

XMLmind XmlEdit para edição e Maven de docbkx plugin para criar uma saída durante a nossa constrói. Para um conjunto de bons modelos de dar uma olhada os Hibernate ou Spring proporcionar.

Para a saída HTML, eu uso o Docbook XSL estilo com o xsltproc processador XSLT.

Para saída PDF, eu uso dblatex , que se traduz em LaTeX e depois usar pdflatex para compilá-lo para PDF . (Eu usei Jade, as folhas de estilo DSSSL e jadetex antes.)

Nós usamos

  • Serna editor XML
  • Eclipse (edição de XML simples, usado principalmente por pessoas técnicas)
  • próprio específico Eclipse plug-in (apenas para os nossos release-notes)
  • Maven docbkx plug-in
  • jar Maven com folha específica estilo corporativo, com base nas folhas de estilo DocBook padrão
  • plug-in
  • Maven para converter CSV para mesa DocBook
  • Maven plug-in para extrair dados BugZilla e criando uma seção DocBook dele
  • Hudson (para gerar o documento PDF (s))
  • Nexus para implantar os documentos PDF criados

Algumas idéias que temos:

Implantar com cada versão do produto não só do PDF, mas também o documento completo DocBook original (como nós, em parte, escrever o documento e, em parte, gerá-los). Salvar o documento completo DocBook torna independente de mudanças na configuração do sistema no futuro. Ou seja, se as alterações no sistema, a partir do qual o conteúdo foi extraído (ou substituídos por diff. Sistemas) que não seria capaz de gerar o conteúdo exato mais. O que poderia causar um problema, se necessário para se re-lançamento (com estilo diferente folhas) toda a Ranche produto de manuais. Mesmo que com os frascos; essas classes Java compiladas também são colocados em Nexus (você não quer armazená-los em seu SCM); isso também faria com o documento DocBook gerado.

Update:

Fresh criado um Maven HTML Cleaner Plug-in , o que torna possível a adicionar conteúdo DocBook para um site de projeto Maven (versão Beta disponível). O feedback é bem-vinda por meio da Abrir Discussão Forum.

As folhas de estilo DocBook, além de FOP, o trabalho bem, mas eu finalmente decidi primavera para RenderX, que abrange o padrão mais profundamente e tem algumas extensões agradáveis ??que as folhas de estilo DocBook aproveitar.

O livro de Bob Stayton, DocBook XSL: The Complete Guide , descreve várias cadeias ferramenta alternativa, incluindo aqueles que funcionam no Linux ou Windows (quase certamente MacOS, também, embora eu não tenha pessoalmente utilizado um Mac).

Uma abordagem popular é a utilização DocBook XSL Stylesheets .

Em relação à pergunta sobre FOP de Apache: quando nós estabelecemos o nosso conjunto de ferramentas (semelhante ao que Gustavo tem sugerido) tivemos resultados muito bons usando o RenderX XEP motor . saída XEPs parece um pouco mais polido, e, tanto quanto me lembro, FOP tinha alguns problemas com tabelas (Isto foi há alguns anos, porém, isso poderia ter mudado).

Com FOP você obtenha os recursos que alguém decidiu que queria ruim o suficiente para implementar. Eu diria que ninguém que é sério sobre a publicação de usa-lo em produção. Você é muito melhor com RenderX ou Antenna House ou Arbortext . (Eu usei-os por toda a pena a última década de projectos de implementação.) Depende de suas necessidades de negócios, o quanto você deseja automatizar, e quais as competências, tempo e recursos da sua equipe são como bem. Não é apenas uma questão de tecnologia.

Se você estiver em Red Hat, Ubuntu ou Windows, você poderia dar uma olhada em Publican, que é suposto ser um bastante completo conjunto de ferramentas de linha de comando. Red Hat utiliza extensivamente.

O artigo chamado O DocBook toolchain pode ser útil como bem. É uma seção de um HOWTO em DocBook escrito por Eric Raymond .

Eu tenho usado dois utils CLI para simplificar minha docbook toolchain:. Xmlto e publicano

Publican tem um aspecto elegante para mim, mas o suficiente equipado para as necessidades do Fedora & publicação Redhat.

Eu libero / estou trabalhando em um projeto de código aberto chamado livraria que é uma RubyGem que instala um completo gasoduto Docbook-XSL / toolchain. Ele inclui tudo o necessário para criar e editar arquivos de origem Docbook e formatos de saída diferentes (atualmente pdf e epub, e crescendo rapidamente).

Meu objetivo é torná-lo possível para ir de Zero-a-Exportação (pdf de ou qualquer outro) de sua fonte Docbook em menos de 10 minutos.

O Sumário:

livraria é um framework baseado em ruby ??OSS para a felicidade docbook conjunto de ferramentas e produtividade sustentável. O quadro é otimizado para desenvolvedores de ajuda rapidamente ramp-up, o que lhes permite saltar mais rapidamente em e desenvolver sua saída DocBook-to-flui, favorecendo convenção sobre configuração, configurá-los com as melhores práticas, padrões e ferramentas a partir do get-go .

Aqui está a localização gem: https://rubygems.org/gems/bookshop

E o código fonte: https://github.com/blueheadpublishing/bookshop

Eu prefiro usar o Windows para a maioria da minha criação de conteúdo (editor Notepad ++). Publican no Linux é uma boa cadeia de ferramentas para criar uma estrutura boa documentação e saídas do processo. Eu uso o Dropbox (há outros serviços de compartilhamento de documentos, bem como, que deve funcionar bem em ambas as plataformas) na minha máquina Windows, bem como máquina Linux Virtual. Com esta configuração, eu tenho sido capaz de alcançar uma combinação que funciona muito bem para mim. Uma vez que editar o trabalho é concluído no Windows (que imediatamente sincroniza a máquina Linux), eu mudar para o Linux para executar construção publicano e criar HTML e saídas em PDF, que novamente são atualizados na minha pasta Windows, Dropbox.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top