| #!/bin/bash |
| # see the README file for usage etc. |
| # |
| # ------------------------------------------------------------------ |
| # This file is part of bzip2/libbzip2, a program and library for |
| # lossless, block-sorting data compression. |
| # |
| # bzip2/libbzip2 version 1.0.5 of 10 December 2007 |
| # Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org> |
| # |
| # Please read the WARNING, DISCLAIMER and PATENTS sections in the |
| # README file. |
| # |
| # This program is released under the terms of the license contained |
| # in the file LICENSE. |
| # ---------------------------------------------------------------- |
| |
| |
| usage() { |
| echo ''; |
| echo 'Usage: xmlproc.sh -[option] <filename.xml>'; |
| echo 'Specify a target from:'; |
| echo '-v verify xml file conforms to dtd'; |
| echo '-html output in html format (single file)'; |
| echo '-ps output in postscript format'; |
| echo '-pdf output in pdf format'; |
| exit; |
| } |
| |
| if test $# -ne 2; then |
| usage |
| fi |
| # assign the variable for the output type |
| action=$1; shift |
| # assign the output filename |
| xmlfile=$1; shift |
| # and check user input it correct |
| if !(test -f $xmlfile); then |
| echo "No such file: $xmlfile"; |
| exit; |
| fi |
| # some other stuff we will use |
| OUT=output |
| xsl_fo=bz-fo.xsl |
| xsl_html=bz-html.xsl |
| |
| basename=$xmlfile |
| basename=${basename//'.xml'/''} |
| |
| fofile="${basename}.fo" |
| htmlfile="${basename}.html" |
| pdffile="${basename}.pdf" |
| psfile="${basename}.ps" |
| xmlfmtfile="${basename}.fmt" |
| |
| # first process the xmlfile with CDATA tags |
| ./format.pl $xmlfile $xmlfmtfile |
| # so the shell knows where the catalogs live |
| export XML_CATALOG_FILES=/etc/xml/catalog |
| |
| # post-processing tidy up |
| cleanup() { |
| echo "Cleaning up: $@" |
| while [ $# != 0 ] |
| do |
| arg=$1; shift; |
| echo " deleting $arg"; |
| rm $arg |
| done |
| } |
| |
| case $action in |
| -v) |
| flags='--noout --xinclude --noblanks --postvalid' |
| dtd='--dtdvalid http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd' |
| xmllint $flags $dtd $xmlfmtfile 2> $OUT |
| egrep 'error' $OUT |
| rm $OUT |
| ;; |
| |
| -html) |
| echo "Creating $htmlfile ..." |
| xsltproc --nonet --xinclude -o $htmlfile $xsl_html $xmlfmtfile |
| cleanup $xmlfmtfile |
| ;; |
| |
| -pdf) |
| echo "Creating $pdffile ..." |
| xsltproc --nonet --xinclude -o $fofile $xsl_fo $xmlfmtfile |
| pdfxmltex $fofile >$OUT </dev/null |
| pdfxmltex $fofile >$OUT </dev/null |
| pdfxmltex $fofile >$OUT </dev/null |
| cleanup $OUT $xmlfmtfile *.aux *.fo *.log *.out |
| ;; |
| |
| -ps) |
| echo "Creating $psfile ..." |
| xsltproc --nonet --xinclude -o $fofile $xsl_fo $xmlfmtfile |
| pdfxmltex $fofile >$OUT </dev/null |
| pdfxmltex $fofile >$OUT </dev/null |
| pdfxmltex $fofile >$OUT </dev/null |
| pdftops $pdffile $psfile |
| cleanup $OUT $xmlfmtfile $pdffile *.aux *.fo *.log *.out |
| # passivetex is broken, so we can't go this route yet. |
| # xmltex $fofile >$OUT </dev/null |
| # xmltex $fofile >$OUT </dev/null |
| # xmltex $fofile >$OUT </dev/null |
| # dvips -R -q -o bzip-manual.ps *.dvi |
| ;; |
| |
| *) |
| usage |
| ;; |
| esac |