문제

나는 본 적이 Docbook XML 문서 작업을위한 최고의 도구, 그러나 내 질문은 약간 다릅니다. XML Docbook의 편집 도구와 달리 현재 권장되는 서식 도구 체인은 무엇입니까?

에릭 레이몬드에서 '유닉스 프로그래밍의 예술' 2003 년 (훌륭한 책!)부터 제안은 XML-FO (XML 포맷 객체)이지만, 이후 XML-FO가 더 이상 개발 중이 아니라는 것을 알리는 제안을 보았습니다 (더 이상 그 질문을 찾을 수는 없습니다. stackoverflow, 아마도 잘못되었을 것입니다).

주로 UNIX/Linux (MacOS X 포함)에 관심이 있다고 가정하지만 Windows 전용 솔루션을 자동으로 무시하지는 않습니다.

~이다 아파치의 FOP 가장 좋은 방법은? 대안이 있습니까?

도움이 되었습니까?

해결책

Cygwin에서 Docbook과 함께 수동 문서를 작성하여 한 페이지 HTML, 많은 페이지 HTML, CHM 및 PDF를 제작했습니다.

다음을 설치했습니다.

  1. 그만큼 문서 스타일 시트 (XSL) 저장소.
  2. XMLLINT, XML이 올바른지 테스트합니다.
  3. XSLTPROC, 스타일 시트로 XML을 처리합니다.
  4. 아파치의 FOP, pdf's.i를 생산하려면 설치된 폴더를 경로에 추가해야합니다.
  5. 마이크로 소프트 HTML 도움이 워크숍, CHM을 생산합니다. 설치된 폴더를 경로에 추가해야합니다.

편집하다: 아래 코드에서는 두 파일 이상을 사용하고 있습니다. 누군가가 스크립트의 정리 버전과 폴더 구조를 원한다면 저에게 연락하십시오 : Guscarreno (squiggly/at) Googlemail (기간/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 접근 방식을 사용하는 것이 좋습니다.

다른 팁

우리는 사용 xmlmind xmledit 편집 및 Maven 용 docbkx 빌드 중 출력을 생성하는 플러그인. 좋은 템플릿 세트를 위해 최대 절전 모드 또는 제공하다.

HTML 출력의 경우 사용합니다 문서 XSL 스타일 시트 XSLT 프로세서 XSLTPROC.

PDF 출력의 경우 사용합니다 dblatex, 라텍스로 번역 한 다음 pdflatex를 사용하여 PDF로 컴파일합니다. (나는 이전에 Jade, DSSSL 스타일 시트 및 Jadetex를 사용했습니다.)

우리는 사용

  • Serna XML 편집기
  • Eclipse (일반 XML 편집, 주로 기술인이 사용합니다)
  • 자신의 특정 Eclipse 플러그인 (릴리스 노트 용)
  • Maven Docbkx 플러그인
  • 표준 문서 스타일 시트를 기반으로 특정 회사 스타일 시트가있는 Maven Jar
  • CSV를 Docbook 테이블로 변환하기위한 Maven 플러그인
  • Bugzilla 데이터를 추출하고 Docbook 섹션을 만들기위한 Maven 플러그인
  • 허드슨 (PDF 문서 생성)
  • Nexus 생성 된 PDF 문서를 배포하려면

우리가 가진 몇 가지 아이디어 :

각 제품 버전과 함께 PDF뿐만 아니라 원래 완전한 문서 문서도 배포하십시오 (문서를 부분적으로 작성하여 부분적으로 생성). 전체 문서 문서를 저장하면 향후 시스템 설정의 변경에 독립적입니다. 즉, 콘텐츠가 추출 된 시스템이 변경되면 (또는 Diff. Systems로 대체) 정확한 콘텐츠를 더 이상 생성 할 수 없습니다. 우리가 매뉴얼의 전체 제품 목장을 다시 릴리스 해야하는 경우 문제를 일으킬 수 있습니다. 항아리와 동일합니다. 이 편집 된 Java 클래스는 Nexus에도 배치됩니다 (SCM에 저장하고 싶지 않음). 이것은 또한 생성 된 문서 문서와도 관련이 있습니다.

업데이트:

신선한 창조 a Maven HTML 클리너 플러그인, 가능합니다 Docbook 콘텐츠를 Maven 프로젝트 사이트에 추가하십시오 (베타 버전 사용 가능). 피드백은 공개 토론 법정.

Docbook 스타일 시트와 FOP는 잘 작동하지만 마침내 표준을보다 철저하게 다루고 Docbook 스타일 시트가 활용하는 멋진 확장 기능이 있습니다.

밥 스테이튼의 책, Docbook XSL : 완전한 가이드, Linux 또는 Windows에서 작동하는 도구 체인을 포함하여 여러 대체 도구 체인을 설명합니다 (거의 Mac을 사용하지는 않았지만 거의 확실하게 MacOS도).

인기있는 접근법은 사용하는 것입니다 문서 XSL 스타일 시트.

Apache의 FOP에 대한 질문과 관련하여 : 우리가 도구 체인을 설립했을 때 (Gustavo가 제안한 것과 유사) Renderx XEP 엔진. XEPS 출력은 조금 더 세련되게 보이고, 내가 기억하는 한, FOP는 테이블에 문제가있었습니다 (이것은 몇 년 전 이었지만 변경되었을 수도 있습니다).

FOP를 사용하면 누군가가 구현하기에 충분히 나쁜 것을 원한다고 결정한 기능을 얻습니다. 출판에 대해 진지한 사람은 프로덕션에 사용하지 않는다고 말하고 싶습니다. RenderX 또는 안테나 하우스 또는 arbortext. (저는 지난 10 년 동안의 구현 프로젝트를 통해이를 사용했습니다.) 비즈니스 요구 사항, 자동화하려는 금액 및 팀의 기술, 시간 및 리소스도 마찬가지입니다. 그것은 단순한 기술 질문이 아닙니다.

Red Hat, Ubuntu 또는 Windows를 사용하고 있다면 Publican을 볼 수 있습니다. Red Hat은 그것을 광범위하게 사용합니다.

이 기사는 불렀다 문서 도구 체인 유용 할 수 있습니다. 그것은 a의 섹션입니다 어떻게 Eric Raymond가 작성한 문서에.

문서 도구 체인을 단순화하기 위해 두 가지 Cli Util을 사용하고 있습니다. XMLTO 및 Publican.

Publican은 나에게 우아 해 보이지만 Fedora & Redhat 출판 요구에 충분히 적합합니다.

Bookshop이라는 오픈 소스 프로젝트에서 작업하는/AM은 완전한 DocBook-XSL 파이프 라인/도구 체인을 설치하는 Rubygem입니다. 여기에는 문서 소스 파일을 작성하고 편집하는 데 필요한 모든 것이 포함되어 있으며 다른 형식 (현재 PDF 및 EPUB 및 빠르게 성장하는 출력)이 포함됩니다.

저의 목표는 10 분 안에 문서 서적 소스에서 제로 모출 (PDF 등)에서 이동할 수 있도록하는 것입니다.

요약:

서점은 문서 도구 체인 행복과 지속 가능한 생산성을위한 OSS Ruby 기반 프레임 워크입니다. 이 프레임 워크는 개발자가 신속하게 늘어나도록 최적화되어 구성에 대한 협약을 선호하여 Get-Go의 모범 사례, 표준 및 도구를 설정함으로써 더 빠르게 뛰어 들고 문서-출력 흐름을 개발할 수 있도록 최적화되었습니다. .

보석 위치는 다음과 같습니다. https://rubygems.org/gems/bookshop

소스 코드 : https://github.com/blueheadpublishing/bookshop

대부분의 콘텐츠 생성에 Windows를 사용하는 것이 좋습니다 (메모장 ++ 편집기). Linux의 Publican은 좋은 문서 구조 및 프로세스 출력을 만들기위한 좋은 도구 체인입니다. 가상 Linux 시스템뿐만 아니라 Windows 컴퓨터에서 Dropbox (다른 문서 공유 서비스도 두 플랫폼에서 잘 작동합니다)를 사용합니다. 이 설정으로 저는 저에게 큰 도움이되는 조합을 달성 할 수있었습니다. Windows에서 작업이 완료되면 (Linux 시스템과 즉시 동기화) Linux로 전환하여 Publican 빌드를 실행하고 HTML 및 PDF 출력을 작성하여 Dropbox를 통해 Windows 폴더에서 다시 업데이트됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top