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

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

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

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

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

23
задан 23.05.2017, 13:29

8 ответов

Я делал некоторые ручные записи с DocBook, под cygwin, для создания HTML на Одну страницу, Многого HTML Страниц, CHM и PDF.

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

  1. таблицы стилей DocBook (xsl) репозиторий.
  2. xmllint, чтобы протестировать, если xml корректен.
  3. xsltproc, для обработки xml с таблицами стилей.
  4. щеголь Apache , для создания PDF. Я удостоверяюсь, что добавил установленную папку к ПУТИ.
  5. Microsoft Семинар Справки HTML , для создания CHM. Я удостоверяюсь, что добавил установленную папку к ПУТИ.

Редактирование : В ниже кода я использую больше, чем эти 2 файла. Если кто-то хочет очищенную версию сценариев и структуры папок, свяжитесь со мной: guscarreno (волнистый/в) googlemail (период/точка) 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

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

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

14
ответ дан 16.10.2019, 13:58
  • 1
    That' s очень положительная сторона! – Joachim Sauer 22.04.2020, 12:12

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

1
ответ дан 16.10.2019, 13:58
  • 1
    Спасибо за информацию. Так как я don' t имеют любые машины Windows, это doesn' t помогают мне, но это может помочь другим. – Jonathan Leffler 02.09.2013, 09:16
  • 2
    Положительная сторона действительно!! – Narendra Pathai 22.04.2020, 12:12

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

Publican выглядит элегантно для меня, но достаточно подходит для Fedora & amp; Редхат нуждается в публикации.

3
ответ дан 16.10.2019, 13:58
  • 1
    Isn' t это своего рода взлом? Что Вы думаете? – Narendra Pathai 22.04.2020, 12:14

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

3
ответ дан 16.10.2019, 13:58
  • 1
    @Katona It’s противоположное, теперь помехи sort метод всегда является тем же. С методами по умолчанию фактическими Collection, с могла переопределить его с альтернативным алгоритмом, оптимизированным к конкретной структуре данных. Метод мог бы все еще делегировать к статическому методу в другом классе, если Вам нравится он. – Holger 22.04.2020, 12:13

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

3
ответ дан 16.10.2019, 13:58
  • 1
    Что я делаю , полагают, что взлом является " expanding" интерфейс путем добавления методов в некотором другом классе помощника (см. Collections.*). Те легки обойтись без изменения языка, но значительно названы отличающимися от методов интерфейса и конкретная реализация can' t изменяют то, что они делают (который приводит к ужасным интерфейсам маркера как RandomAccess, которые, указывают, который алгоритм использовать, для который класс, даже если они совместно используют единый интерфейс). – Joachim Sauer 22.04.2020, 12:13

Относительно вопроса о ЩЕГОЛЕ Apache: когда мы установили наш набор инструментальных средств (подобный тому, что Gustavo предложил), у нас были очень хорошие результаты с помощью механизм RenderX XEP . XEPs производят полируемые взгляды, и насколько я вспоминаю, у ЩЕГОЛЯ были некоторые проблемы с таблицами (это было несколько лет назад, хотя, это, возможно, изменилось).

3
ответ дан 16.10.2019, 13:58

Таблицы стилей DocBook, плюс ЩЕГОЛЬ, работают хорошо, но я наконец решил кинуться за RenderX, который покрывает стандарт более тщательно и имеет некоторые хорошие расширения, которые используют в своих интересах таблицы стилей DocBook.

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

4
ответ дан 16.10.2019, 13:58
  • 1
    Огромное спасибо, которое становилось обширной головной болью. – N. McA. 31.03.2013, 12:09

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

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

У нас есть несколько идей:

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

Обновление:

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

7
ответ дан 16.10.2019, 13:58

Теги

Похожие вопросы