ما هي سلسلة الأدوات الموصى بها لتنسيق XML DocBook؟[مغلق]

StackOverflow https://stackoverflow.com/questions/122752

سؤال

رأيت أفضل الأدوات للعمل مع مستندات DocBook XML, ، لكن سؤالي مختلف قليلاً.ما هي سلسلة أدوات التنسيق الموصى بها حاليًا - بدلاً من أداة التحرير - لـ XML DocBook؟

في اريك ريموند "فن برمجة يونكس" من عام 2003 (كتاب ممتاز!)، الاقتراح هو XML-FO (كائنات تنسيق XML)، لكنني منذ ذلك الحين رأيت اقتراحات هنا تشير إلى أن XML-FO لم يعد قيد التطوير (على الرغم من أنني لم أعد أستطيع العثور على هذا السؤال على StackOverflow، لذا ربما كان الأمر خاطئًا).

افترض أنني مهتم في المقام الأول بنظام التشغيل Unix/Linux (بما في ذلك نظام التشغيل MacOS X)، لكنني لن أتجاهل تلقائيًا الحلول المخصصة لنظام التشغيل Windows فقط.

يكون أباتشي FOP أفضل طريقة للذهاب؟هل هناك أي بدائل؟

هل كانت مفيدة؟

المحلول

لقد كنت أقوم ببعض الكتابة اليدوية باستخدام DocBook، ضمن cygwin، لإنتاج One Page HTML وMany Pages HTML وCHM وPDF.

لقد قمت بتثبيت ما يلي:

  1. ال docbook مستودع أوراق الأنماط (XSL).
  2. xmllint، لاختبار ما إذا كان ملف XML صحيحًا.
  3. xsltproc، لمعالجة ملف XML باستخدام أوراق الأنماط.
  4. أباتشي فوب, لإنتاج ملفات PDF. أتأكد من إضافة المجلد المثبت إلى المسار.
  5. مايكروسوفت ورشة عمل تعليمات HTML, لإنتاج آلية تبادل المعلومات.أتأكد من إضافة المجلد المثبت إلى PATH.

يحرر:في الكود أدناه أستخدم أكثر من الملفين.إذا كان شخص ما يريد نسخة نظيفة من البرامج النصية وبنية المجلد، يرجى الاتصال بي:guscarreno (squiggly/at) googlemail (فترة/نقطة) com

ثم أستخدم ملفconfig.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 للتحرير ومافن com.docbkx البرنامج المساعد لإنشاء الإخراج أثناء بنياتنا.للحصول على مجموعة من القوالب الجيدة، قم بإلقاء نظرة على تلك النماذج بيات شتوى أو ربيع يمد.

بالنسبة لإخراج HTML، أستخدم أوراق أنماط Docbook XSL مع معالج XSLT xsltproc.

لإخراج PDF، أستخدم com.dblatex, ، والذي يترجم إلى LaTeX ثم استخدم pdflatex لتجميعه إلى PDF.(لقد استخدمت Jade وأوراق أنماط DSSSL وjadetex من قبل.)

نحن نستخدم

  • محرر سيرنا XML
  • Eclipse (تحرير XML عادي، يستخدم في الغالب من قبل الأشخاص التقنيين)
  • البرنامج الإضافي الخاص بـ Eclipse (فقط لملاحظات الإصدار الخاصة بنا)
  • البرنامج المساعد Maven docbkx
  • جرة Maven مع ورقة أنماط محددة للشركة، استنادًا إلى أوراق أنماط كتاب المستندات القياسية
  • مكون Maven الإضافي لتحويل ملف CSV إلى جدول DocBook
  • مكون Maven الإضافي لاستخراج بيانات BugZilla وإنشاء قسم DocBook منها
  • هدسون (لإنشاء وثيقة (مستندات) PDF))
  • Nexus لنشر مستندات PDF التي تم إنشاؤها

بعض الأفكار لدينا:

قم بالنشر مع كل إصدار منتج ليس فقط ملف PDF، ولكن أيضًا مستند DocBook الأصلي الكامل (حيث أننا نكتب المستند جزئيًا وننشئه جزئيًا).يؤدي حفظ مستند DocBook الكامل إلى جعلها مستقلة عن التغييرات في إعداد النظام في المستقبل.بمعنى أنه إذا تغير النظام الذي تم استخراج المحتوى منه (أو تم استبداله بـ diff.الأنظمة) لن نكون قادرين على إنشاء المحتوى الدقيق بعد الآن.مما قد يسبب مشكلة، إذا كنا بحاجة إلى إعادة إصدار (بصحيفة أنماط مختلفة) مجموعة المنتجات الكاملة من الأدلة.كما هو الحال مع الجرار.يتم أيضًا وضع فئات Java المترجمة هذه في Nexus (لا ترغب في تخزينها في SCM الخاص بك)؛سنفعل هذا أيضًا مع مستند DocBook الذي تم إنشاؤه.

تحديث:

الطازجة التي تم إنشاؤها أ Maven HTML Cleaner Plug-in, ، مما يجعل من الممكن إضافة محتوى DocBook إلى موقع مشروع Maven (الإصدار التجريبي متاح).ردود الفعل موضع ترحيب من خلال مناقشة مفتوحة المنتدى.

تعمل أوراق أنماط DocBook، بالإضافة إلى FOP، بشكل جيد، لكنني قررت أخيرًا الانتقال إلى RenderX، الذي يغطي المعيار بشكل أكثر شمولاً ويحتوي على بعض الامتدادات الرائعة التي تستفيد منها أوراق أنماط DocBook.

كتاب بوب ستايتون, دوكبوك XSL:الدليل الكامل, ، يصف العديد من سلاسل الأدوات البديلة، بما في ذلك تلك التي تعمل على Linux أو Windows (من المؤكد تقريبًا MacOS أيضًا، على الرغم من أنني لم أستخدم جهاز Mac شخصيًا).

النهج الشائع هو الاستخدام أوراق أنماط DocBook XSL.

فيما يتعلق بالسؤال حول FOP الخاص بـ Apache:عندما أنشأنا سلسلة الأدوات الخاصة بنا (على غرار ما اقترحه غوستافو) حصلنا على نتائج جيدة جدًا باستخدام محرك رندركس XEP.يبدو إخراج XEPs أكثر صقلًا إلى حد ما، وبقدر ما أتذكر، واجه FOP بعض المشكلات مع الجداول (كان هذا منذ بضع سنوات مضت، ربما تغير هذا).

باستخدام FOP، يمكنك الحصول على الميزات التي قرر شخص ما أنه يريد تنفيذها بشكل سيء بما يكفي.أود أن أقول أنه لا أحد جاد في النشر يستخدمه في الإنتاج.أنت أفضل حالًا باستخدام RenderX أو Antenna House أو نص الشجرة.(لقد استخدمتها في جميع مشاريع التنفيذ على مدار العقد الماضي.) يعتمد ذلك على متطلبات عملك، ومدى رغبتك في التشغيل الآلي، ومهارات فريقك ووقته وموارده أيضًا.إنها ليست مجرد مسألة تقنية.

إذا كنت تستخدم Red Hat أو Ubuntu أو Windows، فيمكنك إلقاء نظرة على Publican، والتي من المفترض أن تكون سلسلة أدوات سطر أوامر كاملة إلى حد ما.تستخدمه Red Hat على نطاق واسع.

المقال يسمى سلسلة أدوات DocBook قد يكون مفيدا كذلك.وهو قسم من أ كيف على DocBook كتبه إريك ريموند.

لقد كنت أستخدم اثنين من أدوات CLI لتبسيط سلسلة أدوات docbook الخاصة بي:xmlto والعشار.

يبدو موقع Publican أنيقًا بالنسبة لي ولكنه ملائم بما يكفي لاحتياجات النشر في Fedora & Redhat.

أقوم بإصدار/أعمل في مشروع مفتوح المصدر يسمى bookshop وهو عبارة عن RubyGem الذي يقوم بتثبيت خط أنابيب/سلسلة أدوات Docbook-XSL كاملة.فهو يتضمن كل ما يلزم لإنشاء وتحرير ملفات مصدر Docbook وإخراج تنسيقات مختلفة (حاليًا pdf وepub، وينمو بسرعة).

هدفي هو أن أجعل من الممكن الانتقال من الصفر إلى التصدير (ملف pdf أو أي شيء آخر) من مصدر Docbook الخاص بك في أقل من 10 دقائق.

موجز:

bookShop هو إطار عمل قائم على OSS Ruby لتحقيق السعادة لسلسلة أدوات docbook والإنتاجية المستدامة.تم تحسين إطار العمل لمساعدة المطورين على التكثيف بسرعة، مما يسمح لهم بالقفز بسرعة أكبر وتطوير تدفقات DocBook إلى Output الخاصة بهم، من خلال تفضيل التقاليد على التكوين، وإعدادهم بأفضل الممارسات والمعايير والأدوات من البداية .

وهنا مكان الجوهرة: https://rubygems.org/gems/bookshop

والكود المصدري: https://github.com/blueheadpublishing/bookshop

أفضل استخدام Windows في معظم عمليات إنشاء المحتوى (محرر Notepad++).يعد Publican في Linux سلسلة أدوات جيدة لإنشاء بنية توثيق جيدة ومخرجات العملية.أستخدم Dropbox (توجد أيضًا خدمات أخرى لمشاركة المستندات، والتي يجب أن تعمل بشكل جيد على كلا النظامين الأساسيين) على جهازي الذي يعمل بنظام Windows بالإضافة إلى جهاز Virtual Linux.بفضل هذا الإعداد، تمكنت من تحقيق مجموعة تناسبني بشكل رائع.بمجرد اكتمال أعمال التحرير في Windows (الذي يتزامن على الفور مع جهاز Linux)، أقوم بالتبديل إلى Linux لتشغيل بناء العشار وإنشاء مخرجات HTML وPDF، والتي يتم تحديثها مرة أخرى في مجلد Windows الخاص بي بواسطة Dropbox.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top