100 lines
2.3 KiB
Bash
100 lines
2.3 KiB
Bash
|
#!/bin/bash
|
||
|
# see the README in this directory for usage etc.
|
||
|
|
||
|
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
|