Какова рекомендуемая инструментальная привязка для форматирования XML DocBook?

Я видел Лучшие инструменты для работы с документами DocBook XML, но мой вопрос несколько отличается. Какая из рекомендуемых в настоящее время инструментальных средств форматирования - в отличие от инструмента редактирования - для XML DocBook?

В Eric Raymond "Искусство программирования Unix" с 2003 года (отличная книга!), предлагается XML-FO (XML Форматирование объектов), но с тех пор я видел здесь предложения, указывающие на то, что XML-FO больше не разрабатывается (хотя я больше не могу найти этот вопрос в StackOverflow, поэтому, возможно, он был ошибочным).

Предположим, что меня в первую очередь интересует Unix/Linux (включая MacOS X), но я бы не стал автоматически игнорировать решения для Windows.

Является Apache FOP лучшим способом? Есть ли альтернативы?

Ответ 1

Я занимаюсь рукописным письмом с DocBook под cygwin, чтобы создать HTML-страницу, HTML-страниц, HTML и CHF.

Я установил следующее:

  • docbook репозиторий таблиц стилей (xsl).
  • xmllint, чтобы проверить правильность xml.
  • xsltproc, чтобы обработать xml с таблицами стилей.
  • Apache fop, чтобы создать PDF's.I не забудьте добавить установленную папку в PATH.
  • Microsoft HTML Help Workshop, чтобы создать CHM. Я обязательно добавлю установленную папку в PATH.

Изменить. В приведенном ниже коде я использую более двух файлов. Если кто-то хочет очистить версию скриптов и структуру папок, свяжитесь со мной: guscarreno (squiggly/at) googlemail (period/dot) com

Затем я использую 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

и 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

для автоматизации производства вышеназванных файлов.

Я предпочитаю использовать nix-подход к сценарию только потому, что набор инструментов проще найти и использовать, не говоря уже о том, чтобы упростить цепочку.

Ответ 2

Мы используем XMLmind XmlEdit для редактирования и Maven docbkx, чтобы создавать выходные данные в наших сборках. Для набора хороших шаблонов посмотрите на Hibernate или Spring.

Ответ 3

Для вывода HTML я использую таблицы стилей Docbook XSL с XSLT-процессором xsltproc.

Для вывода в формате PDF я использую dblatex, который переводится в LaTeX, а затем использует pdflatex для его компиляции в PDF. (Раньше я использовал Jade, таблицы стилей DSSSL и jadetex.)

Ответ 4

Мы используем

  • Serna XML Editor
  • Eclipse (простое редактирование xml, в основном используемое техническими людьми)
  • собственный специальный плагин Eclipse (только для наших заметок)
  • Плагин Maven docbkx
  • Maven jar со специальной фирменной таблицей стилей, основанной на стандартных стилях docbook
  • Плагин Maven для преобразования csv в таблицу DocBook
  • Плагин Maven для извлечения данных BugZilla и создания из него раздела DocBook
  • Хадсон (для создания PDF-документа (ов))
  • Nexus для развертывания созданных документов PDF

Некоторые идеи, которые мы имеем:

Развертывание с каждой версией продукта не только PDF, но и оригинального документа DocBook (поскольку мы частично записываем документ и частично генерируем его). Сохранение полного документа DocBook делает их независимыми для изменений в настройке системы в будущем. Смысл, если система изменится, из которой контент был извлечен (или заменен системами diff), мы больше не сможем генерировать точный контент. Это может вызвать проблему, если нам нужно переиздать (с разным стилем) весь продукт ranche руководств. То же, что и с банками; эти скомпилированные классы Java также размещаются в Nexus (вы не хотите хранить их в своем SCM); это мы также будем делать с созданным документом DocBook.

Update:

Fresh создал подключаемый модуль Maven HTML Cleaner, позволяющий добавить контент DocBook на сайт проекта Maven (доступна бета-версия). Обратная связь приветствуется через Open Discussion Forum.

Ответ 5

Популярным подходом является использование DocBook XSL Stylesheets.

Ответ 6

Таблицы стилей DocBook, а также FOP, хорошо работают, но я, наконец, решил spring для RenderX, который более подробно охватывает стандарт и имеет некоторые приятные расширения, которые используют таблицы стилей DocBook.

Книга Боб Стайтона, DocBook XSL: полное руководство описывает несколько альтернативных цепочек инструментов, в том числе работающих в Linux или Windows (почти конечно же, MacOS, хотя я лично не использовал Mac).

Ответ 8

Что касается вопроса о Apache FOP: когда мы установили нашу инструментальную цепочку (аналогично тому, что предложил Густаво), у нас были очень хорошие результаты, используя RenderX XEP engine. Выход XEP выглядит немного более полированным, и, насколько я помню, у FOP были проблемы с таблицами (это было несколько лет назад, хотя это могло измениться).

Ответ 9

С FOP вы получаете функции, которые кто-то решил, что они хотят, чтобы они были достаточно плохими для реализации. Я бы сказал, что никто, кто серьезно относится к публикации, не использует его в производстве. Вам намного лучше с RenderX или Antenna House или Arbortext. (Я использовал их в течение последних десятилетий проектов реализации.) Это зависит от ваших бизнес-требований, от того, сколько вы хотите автоматизировать, и каковы ваши навыки, время и ресурсы вашей команды. Это не только технологический вопрос.

Ответ 10

Если вы работаете в Red Hat, Ubuntu или Windows, вы можете взглянуть на Publican, который, как предполагается, является довольно полным набором инструментов командной строки. Red Hat широко использует его.

Ответ 11

Я использовал два утилиты CLI для упрощения моей инструментальной цепочки docbook: xmlto и publican.

Publican выглядит элегантно для меня, но достаточно приспособлен для публикации Fedora и Redhat.

Ответ 12

Я выпускаю/работаю над проектом с открытым исходным кодом, называемым книжным магазином, который является RubyGem, который устанавливает полный конвейер/инструментальную цепочку Docbook-XSL. Он включает все необходимое для создания и редактирования исходных файлов Docbook и вывода различных форматов (в настоящее время pdf и epub, и быстро растет).

Моя цель - сделать возможным переход от нулевого к экспорту (pdf или любой другой) из вашего источника Docbook менее чем за 10 минут.

Резюме:

bookShop - это русс-ориентированная платформа OSS, предназначенная для счастья и устойчивой производительности учебной программы docbook. Рамка оптимизирована, чтобы помочь разработчикам быстро наращивать скорость, позволяя им быстрее входить и развивать свои потоки DocBook-to-Output, предпочитая соглашение по конфигурации, настраивая их с помощью лучших практик, стандартов и инструментов с самого начала.

Здесь местоположение драгоценного камня: https://rubygems.org/gems/bookshop

И исходный код: https://github.com/blueheadpublishing/bookshop

Ответ 13

Я предпочитаю использовать Windows для большей части моего создания контента (редактор Notepad ++). Publican в Linux - хорошая цепочка инструментов для создания хорошей структуры документации и результатов процесса. Я использую Dropbox (есть и другие службы обмена документами, которые должны хорошо работать на обеих платформах) на моей машине Windows, а также на машине Virtual Linux. Благодаря этой настройке я смог добиться комбинации, которая отлично подходит для меня. После завершения редактирования в Windows (которая сразу же синхронизируется с машиной Linux) я переключусь на Linux, чтобы запускать сборку publican и создавать выходы HTML и PDF, которые снова обновляются в моей папке Windows Dropbox.