الموقع التالي يحتوي على xsl وسكربت perl لعمل ذلك
لسبب ما سكربت بيرل لا يعمل جيدا
قمت بكتابة بديل على bash قم وضعه داخل utils
#!/bin/bash # docbook2odf.sh function error() { echo "$1" >&2 exit 1 } myscript=$( basename "$0" ) prefix=$( dirname "$0" ) [ $# -ne 2 ] && error "Usage: $myscript docbookfile.xml /path/to/outfile.odt" input=$1; shift output_file=$1; shift b_o=`basename "$output_file"` PATH_XSL="$prefix/../xsl" TEMP="/tmp/docbook2odf$$""$b_o.tmp" mkdir -p "$TEMP" || error "Could not create temp directory" mkdir -p "$TEMP/Pictures" mkdir -p "$TEMP/META-INF" mkdir -p "$TEMP/process" echo "input=$input" echo "output_file=$output_file" echo "TEMP=$TEMP" ################################################################################## # DOCBOOK -> ODF (one big xml) ################################################################################## XML_DOC="$input" XSL="$PATH_XSL/docbook.xsl" OPTIONS='--stringparam CI.style.color #329832' # --stringparam PARAMNAME PARAMVALUE xsltproc --stringparam generate.toc 1 --stringparam CI.text.copyright "وثائق أعجوبة" $OPTIONS "$XSL" "$XML_DOC" > "$TEMP/process/full.xml" || error "Could not generate xml file" # echo "application/vnd.oasis.opendocument.text" > "$TEMP/mimetype" ################################################################################## # SPLIT ################################################################################## XML_DOC="$TEMP/process/full.xml" XSL="$PATH_XSL/odf.xsl" # MANIFEST xsltproc --stringparam part manifest "$XSL" "$XML_DOC" > "$TEMP/META-INF/manifest.xml" # META xsltproc --stringparam part meta "$XSL" "$XML_DOC" > "$TEMP/meta.xml" # STYLES xsltproc --stringparam part styles "$XSL" "$XML_DOC" > "$TEMP/styles.xml" # CONTENT xsltproc --stringparam part content "$XSL" "$XML_DOC" > "$TEMP/content.xml" ################################################################################## # POSTPROCESSING ################################################################################## # TODO: implement post processing # TODO: copy pictures into TEMP directory # TODO: convert alternative nbsp character to ODF spaces # $content=~s|([\xC2\x82]+)|'<text:s text:c="'.length($1).'"/>'|eg; ################################################################################## # ZIPPING ################################################################################## #doctype=$( perl -wne 'if (/\<office:(text|presentation|spread)/) {print $1,"\n"; exit 0}' "$TEMP/process/full.xml" ) rm -rf "$TEMP/process/" pushd "$TEMP" >/dev/null zip -rq "$output_file" * popd >/dev/null rm -rf "$TEMP"
هذا مثال يوضح كيفية استخدام itext لإنتاج pdf من xml لكن هنا علينا عمل فية مشتقة من org.xml.sax.helpers.DefaultHandler ثم إعراب ملف xml