2008-09-23 10 views
22

मैंने Best tools for working with DocBook XML documents देखा है, लेकिन मेरा प्रश्न थोड़ा अलग है। वर्तमान में अनुशंसित स्वरूपण टूलचेन कौन सा है - संपादन टूल के विपरीत - एक्सएमएल डॉकबुक के लिए?एक्सएमएल डॉकबुक को स्वरूपित करने के लिए अनुशंसित टूलचेन क्या है?

2003 से एरिक रेमंड के 'The Art of Unix Programming' में (एक उत्कृष्ट पुस्तक!) में, सुझाव एक्सएमएल-एफओ (एक्सएमएल फॉर्मेटिंग ऑब्जेक्ट्स) है, लेकिन मैंने बाद में सुझावों को देखा है जो दर्शाते हैं कि एक्सएमएल-एफओ अब विकास में नहीं है (हालांकि अब मैं स्टैक ओवरफ्लो पर उस प्रश्न को नहीं ढूंढ सकता, इसलिए शायद यह गलत था)।

मान लीजिए कि मैं मुख्य रूप से यूनिक्स/लिनक्स (मैकोज़ एक्स सहित) में रूचि रखता हूं, लेकिन मैं विंडोज़-केवल समाधानों को स्वचालित रूप से अनदेखा नहीं करता हूं।

Apache's FOP जाने का सबसे अच्छा तरीका है? क्या कोई विकल्प हैं?

+0

"स्वरूपण" क्या है? पीडीएफ? एचटीएमएल? – bortzmeyer

+0

पीडीएफ, एचटीएमएल दो प्राथमिक प्रारूप होंगे - यह सुनिश्चित नहीं है कि ओडीएफ कोई समझ में आता है या नहीं। पाठ अवसर पर भी उपयोगी होगा। चूंकि कई सुझाए गए टूल चेन लेटेक्स के माध्यम से जाते हैं, जो कोई समस्या नहीं पेश करता है। मैं ट्रॉफ (और तस्वीर, और टीबीएल, और ईकएन - और अभ्यास के लिए एक कस्टम प्रीप्रोसेसर का उपयोग करके लिखी गई एक पुरानी पुस्तक माइग्रेट करने पर विचार कर रहा हूं - डॉकबुक में केवल अध्याय, प्रश्न और उत्तर में प्रश्न)।विभिन्न कार्यक्रमों और अन्य प्रोग्राम दस्तावेज के लिए मैन्युअल पेज भी। Docbkx Maven प्लगइन के लिए –

उत्तर

13

मैं एक पेज एचटीएमएल, कई पेज एचटीएमएल, सीएचएम और पीडीएफ का उत्पादन करने के लिए, साइगविन के तहत, डॉकबुक के साथ कुछ मैन्युअल लेखन कर रहा हूं।

  1. docbook स्टाइलशीट (XSL) भंडार:

    मैं निम्नलिखित स्थापित।

  2. xmllint, परीक्षण करने के लिए कि क्या एक्सएमएल सही है।
  3. xsltproc, स्टाइलशीट के साथ xml को संसाधित करने के लिए।
  4. Apache's fop, पीडीएफ बनाने के लिए। मैं स्थापित फ़ोल्डर को पैथ में जोड़ना सुनिश्चित करता हूं।
  5. सीएचएम का उत्पादन करने के लिए माइक्रोसॉफ्ट के HTML Help Workshop। मैं स्थापित फ़ोल्डर को पैथ में जोड़ना सुनिश्चित करता हूं।

संपादित: नीचे दिए गए कोड में मैं 2 फ़ाइलें की तुलना में अधिक उपयोग कर रहा हूँ। कोई स्क्रिप्ट और फ़ोल्डर संरचना की एक साफ संस्करण चाहता है, कृपया मुझसे संपर्क करें: guscarreno (टेढ़ा-मेढ़ा/पर) googlemail (अवधि/डॉट) कॉम

मैं तो एक 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 

ऊपर उल्लेख किया फ़ाइल आउटपुट के उत्पादन को स्वचालित करने के।

मैं स्क्रिप्टिंग के लिए एक निक्स दृष्टिकोण का उपयोग करना पसंद करता हूं क्योंकि टूलसेट को ढूंढना और उपयोग करना अधिक आसान है, श्रृंखला के लिए आसान उल्लेख नहीं करना।

2

अपाचे के एफओपी के बारे में सवाल के बारे में: जब हमने अपना टूलचैन स्थापित किया (जैसा कि गुस्तावो ने सुझाव दिया है) हमारे पास RenderX XEP engine का उपयोग करके बहुत अच्छे परिणाम थे। एक्सईपी आउटपुट थोड़ा और अधिक पॉलिश दिखता है, और जहां तक ​​मुझे याद है, एफओपी को तालिकाओं के साथ कुछ समस्याएं थीं (हालांकि कुछ साल पहले यह शायद बदल गया हो)।

3

डॉकबुक स्टाइलशीट्स, प्लस एफओपी, अच्छी तरह से काम करते हैं, लेकिन आखिरकार मैंने रेंडरएक्स के लिए वसंत करने का फैसला किया, जो मानक को अधिक अच्छी तरह से कवर करता है और इसमें कुछ अच्छे एक्सटेंशन हैं जो डॉकबुक स्टाइलशीट का लाभ उठाते हैं।

बॉब स्टेटन की पुस्तक, DocBook XSL: The Complete Guide, लिनक्स या विंडोज पर काम करने वाले कई वैकल्पिक टूल चेन का वर्णन करती है (लगभग निश्चित रूप से मैकोज़, हालांकि, मैंने व्यक्तिगत रूप से मैक का उपयोग नहीं किया है)।

6

हम संपादन के लिए XMLmind XmlEdit और हमारे निर्माण के दौरान आउटपुट बनाने के लिए मेवेन के docbkx प्लगइन का उपयोग करते हैं। अच्छे टेम्पलेट्स के सेट के लिए Hibernate या Spring प्रदान करें।

+0

+1, यह एक प्लेटफॉर्म स्वतंत्र तरीके से डॉकबुक के साथ काम करने के लिए आवश्यक सबकुछ प्रदान करता है। यह एक उत्कृष्ट उपकरण है भले ही आप जावा परियोजनाओं पर काम नहीं कर रहे हों। http://code.google.com/p/docbkx-tools –

6

एचटीएमएल आउटपुट के लिए, मैं एक्सएसएलटी प्रोसेसर xsltproc के साथ Docbook XSL stylesheets का उपयोग करता हूं।

पीडीएफ आउटपुट के लिए, मैं dblatex का उपयोग करता हूं, जो लाटेक्स में अनुवाद करता है और फिर इसे पीडीएफएलएक्स का उपयोग पीडीएफ में संकलित करने के लिए करता है। (मैं जेड, DSSSL स्टाइलशीट और jadetex से पहले हुआ करता था।)

+0

जेडेटेक्स से dblatex से स्विथ करने का कारण क्या था? क्या गुणवत्ता बेहतर है? – schoetbi

6

हम

  • Serna XML Editor
  • ग्रहण (सादा एक्सएमएल संपादन, ज्यादातर तकनीकी लोगों द्वारा इस्तेमाल)
  • अपनी विशिष्ट ग्रहण प्लग का उपयोग में (बस हमारी रिहाई-नोट्स के लिए)
  • Maven प्लग-इन docbkx
  • विशिष्ट कॉर्पोरेट शैली पत्रक के साथ
  • Maven जार, मानक DocBook शैली-शीट के आधार पर
  • +०१२३५१६४१०६१
  • Maven प्लग-इन DocBook तालिका
  • Maven करने के लिए csv परिवर्तित करने के लिए प्लग-इन बगजिला डेटा निकालने और से यह
  • हडसन
  • नेक्सस तैनात करने के लिए (पीडीएफ दस्तावेज़ (रों) उत्पन्न करने के लिए) एक DocBook खंड बनाने के लिए बनाया पीडीएफ दस्तावेजों

कुछ विचार हमने:

प्रत्येक उत्पाद संस्करण न केवल पीडीएफ, लेकिन यह भी मूल पूरा DocBook दस्तावेज़ के साथ नियोजित करें (जैसा कि हम आंशिक रूप से दस्तावेज़ लिख सकते हैं और आंशिक रूप से उन्हें उत्पन्न)। पूर्ण डॉकबुक दस्तावेज़ को सहेजना उन्हें भविष्य में सिस्टम सेटअप में बदलाव के लिए स्वतंत्र बनाता है। मतलब, यदि सिस्टम बदलता है, जिसमें से सामग्री निकाली गई थी (या diff सिस्टम द्वारा प्रतिस्थापित) हम अब सटीक सामग्री उत्पन्न करने में सक्षम नहीं होंगे। जो किसी समस्या का कारण बन सकता है, अगर हमें मैनुअल के पूरे उत्पाद की किश्त को फिर से रिलीज़ करने की आवश्यकता होती है (विभिन्न स्टाइल शीट के साथ)। जार के समान ही; ये संकलित जावा कक्षाएं नेक्सस में भी रखी गई हैं (आप उन्हें अपने एससीएम में स्टोर नहीं करना चाहते हैं); यह हम जेनरेट किए गए दस्तावेज़ दस्तावेज़ के साथ भी करेंगे।

अद्यतन:

ताजा एक Maven एचटीएमएल क्लीनर प्लग-इन है, जो यह संभव करने के लिए add DocBook content to a Maven Project Site (बीटा संस्करण उपलब्ध है) बनाता है बनाया। फीडबैक Open Discussion फोरम के माध्यम से स्वागत है।

+0

जानकारी के लिए धन्यवाद। –

2

एफओपी के साथ आपको ऐसी सुविधाएं मिलती हैं जिन्हें किसी ने फैसला किया कि वे लागू करने के लिए पर्याप्त खराब चाहते हैं। मैं कहूंगा कि कोई भी जो प्रकाशन के बारे में गंभीर नहीं है, इसे उत्पादन में उपयोग करता है। आप रेंडरएक्स या एंटेना हाउस या Arbortext के साथ बहुत बेहतर हैं। (मैंने उन्हें पिछले दशक के कार्यान्वयन परियोजनाओं के लायक उपयोग में उपयोग किया है।) यह आपकी व्यावसायिक आवश्यकताओं पर निर्भर करता है, आप कितना स्वचालित करना चाहते हैं, और आपकी टीम के कौशल, समय और संसाधन भी क्या हैं। यह सिर्फ एक तकनीकी सवाल नहीं है।

2

यदि आप रेड हैट, उबंटू या विंडोज पर हैं, तो आप पब्लिकन पर एक नज़र डाल सकते हैं, जिसे एक पूर्ण पूर्ण कमांड लाइन टूलचेन माना जाता है। Red Hat इसे बड़े पैमाने पर उपयोग करता है।

1

मैं जारी/एक खुला स्रोत परियोजना कहा जाता है किताबों की दुकान है जो एक RubyGem है पर काम कर रहा हूँ जो एक पूर्ण डॉकबुक-एक्सएसएल पाइपलाइन/टूलचेन स्थापित करता है। इसमें डॉकबुक स्रोत फ़ाइलों को बनाने और संपादित करने के लिए आवश्यक सब कुछ शामिल है और आउटपुट भिन्न प्रारूप (वर्तमान में पीडीएफ और एपब, और तेजी से बढ़ रहे हैं)।

मेरा लक्ष्य 10 मिनट से कम समय में आपके डॉकबुक स्रोत से शून्य-से-निर्यात (पीडीएफ या जो भी) से जाना संभव है।

सारांश:

किताबों की दुकान DocBook toolchain खुशी और सतत उत्पादकता के लिए एक ओएसएस माणिक आधारित रूपरेखा है। ढांचे को डेवलपर्स को तेजी से रैंप-अप करने में मदद करने के लिए अनुकूलित किया गया है, जिससे उन्हें अधिक तेज़ी से कूदने और कॉन्फ़िगरेशन पर सम्मेलन के पक्ष में, उनके सर्वोत्तम दस्तावेज़ों, मानकों और औजारों को स्थापित करने के लिए सेट करके, उनके डॉकबुक-टू-आउटपुट प्रवाह को विकसित करने की अनुमति मिलती है। । https://rubygems.org/gems/bookshop

और स्रोत कोड: https://github.com/blueheadpublishing/bookshop

3

लेख The DocBook toolchain कहा जाता है और साथ ही उपयोगी हो सकता है

यहाँ मणि स्थान है। यह एरिक रेमंड द्वारा लिखित डॉकबुक पर HOWTO का एक खंड है।

2

मैं अपने डॉकबुक टूलचेन को सरल बनाने के लिए दो सीएलआई यूटिल का उपयोग कर रहा हूं: xmlto और publican।

पब्लिकन मेरे लिए सुरुचिपूर्ण दिखता है लेकिन फेडोरा & रेडहाट प्रकाशन की ज़रूरतों के लिए पर्याप्त फिट है।

0

मैं अपने सामग्री निर्माण (Notepad ++ संपादक) के अधिकांश के लिए Windows का उपयोग कर पसंद करते हैं। लिनक्स में पब्लिकन एक अच्छी प्रलेखन संरचना और प्रक्रिया आउटपुट बनाने के लिए एक अच्छी उपकरण श्रृंखला है। मैं ड्रॉपबॉक्स का उपयोग करता हूं (अन्य दस्तावेज़ साझा करने वाली सेवाएं भी हैं, जो कि दोनों प्लेटफार्मों पर अच्छी तरह से काम करनी चाहिए) मेरी विंडोज मशीन के साथ-साथ वर्चुअल लिनक्स मशीन पर भी। इस सेटअप के साथ मैं एक संयोजन प्राप्त करने में सक्षम हूं जो मेरे लिए बहुत अच्छा काम करता है। विंडोज़ में एक बार संपादन कार्य पूरा हो जाता है (जो तुरंत लिनक्स मशीन से सिंक हो जाता है), मैं सार्वजनिक निर्माण को चलाने और एचटीएमएल और पीडीएफ आउटपुट बनाने के लिए लिनक्स पर स्विच करता हूं, जिसे ड्रॉपबॉक्स द्वारा मेरे विंडोज फ़ोल्डर में फिर से अपडेट किया जाता है।

+0

जानकारी के लिए धन्यवाद। चूंकि मेरे पास कोई विंडोज मशीन नहीं है, इसलिए यह मेरी मदद नहीं करती है, लेकिन यह दूसरों की मदद कर सकती है। –

संबंधित मुद्दे