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