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

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

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

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

Лучше ли Apache FOP? Есть ли альтернативы?


person Jonathan Leffler    schedule 23.09.2008    source источник
comment
Форматирование к чему? PDF? HTML?   -  person bortzmeyer    schedule 18.05.2009
comment
PDF, HTML будут двумя основными форматами - не уверен, имеет ли ODF какой-то смысл. Текст тоже может быть полезен при случае. Поскольку ряд предлагаемых цепочек инструментов проходит через латекс, это не представляет проблемы. Я подумываю о переносе старой книги, написанной с использованием troff (и pic, и tbl, и eqn, и специального препроцессора для упражнений - вопросы только в главе, вопросы и ответы в приложении) в DocBook. Также справочные страницы для различных программ и другая программная документация.   -  person Jonathan Leffler    schedule 18.05.2009


Ответы (13)


Я вручную писал с помощью DocBook под cygwin для создания одностраничного HTML, многостраничного HTML, CHM и PDF.

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

  1. Репозиторий таблиц стилей (xsl) docbook.
  2. xmllint, чтобы проверить правильность XML.
  3. xsltproc, чтобы обработать xml с таблицами стилей.
  4. Apache fop для создания PDF-файлов. Я обязательно добавляю установленную папку в PATH .
  5. HTML Help Workshop от Microsoft , для производства ЧМ. Я обязательно добавляю установленную папку в 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:

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

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

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

person Gustavo Carreno    schedule 23.09.2008

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

person Oliver Drotbohm    schedule 17.05.2009
comment
+1 для плагина docbkx Maven, он предоставляет все необходимое для работы с DocBook независимо от платформы. Это отличный инструмент, даже если вы не работаете над Java-проектами. code.google.com/p/docbkx-tools - person Emmanuel Bourg; 15.11.2011

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

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

person bortzmeyer    schedule 18.05.2009
comment
В чем причина перехода с jadetex на dblatex? Качество лучше? - person schoetbi; 15.03.2013

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

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

Некоторые идеи у нас есть:

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

Обновление:

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

person Verhagen    schedule 29.01.2010

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

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

person Dick    schedule 05.11.2008

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

person Jim    schedule 23.09.2008

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

person Palmin    schedule 23.09.2008

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

person Liz Fraley    schedule 08.03.2010

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

person uman    schedule 12.06.2010

Также может быть полезна статья под названием Набор инструментов DocBook. Это раздел HOWTO в DocBook, написанный Эриком Рэймондом. .

person Upendra    schedule 24.05.2012

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

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

person Ismael Olea    schedule 22.10.2012

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

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

Резюме:

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

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

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

person Dave Thompson    schedule 28.03.2011

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

person Ajay    schedule 02.09.2013
comment
Спасибо за информацию. Поскольку у меня нет компьютеров с Windows, это не помогает мне, но может помочь другим. - person Jonathan Leffler; 02.09.2013