1 #!/bin/bash 2 # see the README file for usage etc. 3 # 4 # ------------------------------------------------------------------ 5 # This file is part of bzip2/libbzip2, a program and library for 6 # lossless, block-sorting data compression. 7 # 8 # bzip2/libbzip2 version 1.0.6 of 6 September 2010 9 # Copyright (C) 1996-2010 Julian Seward <jseward (at] bzip.org> 10 # 11 # Please read the WARNING, DISCLAIMER and PATENTS sections in the 12 # README file. 13 # 14 # This program is released under the terms of the license contained 15 # in the file LICENSE. 16 # ---------------------------------------------------------------- 17 18 19 usage() { 20 echo ''; 21 echo 'Usage: xmlproc.sh -[option] <filename.xml>'; 22 echo 'Specify a target from:'; 23 echo '-v verify xml file conforms to dtd'; 24 echo '-html output in html format (single file)'; 25 echo '-ps output in postscript format'; 26 echo '-pdf output in pdf format'; 27 exit; 28 } 29 30 if test $# -ne 2; then 31 usage 32 fi 33 # assign the variable for the output type 34 action=$1; shift 35 # assign the output filename 36 xmlfile=$1; shift 37 # and check user input it correct 38 if !(test -f $xmlfile); then 39 echo "No such file: $xmlfile"; 40 exit; 41 fi 42 # some other stuff we will use 43 OUT=output 44 xsl_fo=bz-fo.xsl 45 xsl_html=bz-html.xsl 46 47 basename=$xmlfile 48 basename=${basename//'.xml'/''} 49 50 fofile="${basename}.fo" 51 htmlfile="${basename}.html" 52 pdffile="${basename}.pdf" 53 psfile="${basename}.ps" 54 xmlfmtfile="${basename}.fmt" 55 56 # first process the xmlfile with CDATA tags 57 ./format.pl $xmlfile $xmlfmtfile 58 # so the shell knows where the catalogs live 59 export XML_CATALOG_FILES=/etc/xml/catalog 60 61 # post-processing tidy up 62 cleanup() { 63 echo "Cleaning up: $@" 64 while [ $# != 0 ] 65 do 66 arg=$1; shift; 67 echo " deleting $arg"; 68 rm $arg 69 done 70 } 71 72 case $action in 73 -v) 74 flags='--noout --xinclude --noblanks --postvalid' 75 dtd='--dtdvalid http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd' 76 xmllint $flags $dtd $xmlfmtfile 2> $OUT 77 egrep 'error' $OUT 78 rm $OUT 79 ;; 80 81 -html) 82 echo "Creating $htmlfile ..." 83 xsltproc --nonet --xinclude -o $htmlfile $xsl_html $xmlfmtfile 84 cleanup $xmlfmtfile 85 ;; 86 87 -pdf) 88 echo "Creating $pdffile ..." 89 xsltproc --nonet --xinclude -o $fofile $xsl_fo $xmlfmtfile 90 pdfxmltex $fofile >$OUT </dev/null 91 pdfxmltex $fofile >$OUT </dev/null 92 pdfxmltex $fofile >$OUT </dev/null 93 cleanup $OUT $xmlfmtfile *.aux *.fo *.log *.out 94 ;; 95 96 -ps) 97 echo "Creating $psfile ..." 98 xsltproc --nonet --xinclude -o $fofile $xsl_fo $xmlfmtfile 99 pdfxmltex $fofile >$OUT </dev/null 100 pdfxmltex $fofile >$OUT </dev/null 101 pdfxmltex $fofile >$OUT </dev/null 102 pdftops $pdffile $psfile 103 cleanup $OUT $xmlfmtfile $pdffile *.aux *.fo *.log *.out 104 # passivetex is broken, so we can't go this route yet. 105 # xmltex $fofile >$OUT </dev/null 106 # xmltex $fofile >$OUT </dev/null 107 # xmltex $fofile >$OUT </dev/null 108 # dvips -R -q -o bzip-manual.ps *.dvi 109 ;; 110 111 *) 112 usage 113 ;; 114 esac 115