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