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