415 lines
11 KiB
Plaintext
415 lines
11 KiB
Plaintext
|
#! /bin/bash
|
||
|
|
||
|
usage()
|
||
|
{
|
||
|
cat <<EOF
|
||
|
Usage: $pname [OPTION]
|
||
|
|
||
|
Known values for OPTION are:
|
||
|
--prefix=DIR change the output directory for catalog files
|
||
|
[default $DIR]
|
||
|
--show display the output filenames and paths
|
||
|
--version=x.y.z change the DocBook version [default $VERSION]
|
||
|
--debug display script action information
|
||
|
--help display this help and exit
|
||
|
EOF
|
||
|
}
|
||
|
|
||
|
setdefault()
|
||
|
{
|
||
|
echo Unable to update root catalog $ROOTCATALOG
|
||
|
ROOTCATALOG=$HOME/xmlcatalog
|
||
|
CATALOG=$HOME/dbkxmlcatalog
|
||
|
DIR=$HOME
|
||
|
CAT=xmlcatalog
|
||
|
echo Using $ROOTCATALOG as the root catalog
|
||
|
echo Remember to export XML_CATALOG_FILES=$ROOTCATALOG
|
||
|
echo
|
||
|
prefix=1
|
||
|
}
|
||
|
|
||
|
fixname()
|
||
|
{
|
||
|
#
|
||
|
# ROOTCATALOG contains the full pathname for the catalog. We will
|
||
|
# split that into the directory name and the filename, then we will
|
||
|
# see if the directory exists. If it does not, we will attempt to
|
||
|
# create it.
|
||
|
#
|
||
|
if test $verbose = 1
|
||
|
then
|
||
|
echo Checking path $ROOTCATALOG for permissions
|
||
|
fi
|
||
|
# First we split the filename and directory name
|
||
|
CAT=`basename $ROOTCATALOG`
|
||
|
DIR=`dirname $ROOTCATALOG`
|
||
|
if test "$DIR" = ""
|
||
|
then
|
||
|
echo Unable to isolate directory name from '$ROOTCATALOG' - exiting
|
||
|
exit 1
|
||
|
fi
|
||
|
CATALOG=${DIR}/docbook
|
||
|
parent=`dirname $DIR`
|
||
|
if test "$parent" == ""
|
||
|
then
|
||
|
parent=/
|
||
|
fi
|
||
|
if [ ! -d $DIR ]
|
||
|
then
|
||
|
if test $verbose = 1
|
||
|
then
|
||
|
echo Directory $DIR missing - I will try to create it
|
||
|
fi
|
||
|
if [ ! -w $parent ]
|
||
|
then
|
||
|
if test $verbose = 1
|
||
|
then
|
||
|
echo No write permission for directory $parent
|
||
|
fi
|
||
|
setdefault
|
||
|
else
|
||
|
newdir=1
|
||
|
fi
|
||
|
else
|
||
|
if [ -f $ROOTCATALOG -a ! -w $ROOTCATALOG ] ||
|
||
|
[ -e $ROOTCATALOG -a ! -f $ROOTCATALOG ] ||
|
||
|
[ ! -e $ROOTCATALOG -a ! -w $DIR ]
|
||
|
then
|
||
|
setdefault
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
}
|
||
|
finddbx()
|
||
|
{
|
||
|
dtd421=""
|
||
|
s="//OASIS//DTD DocBook XML V${VERSION}//EN"
|
||
|
found=`find $1 -name docbookx.dtd -exec grep -l "$s" {} \;`
|
||
|
for dtd in $found; do
|
||
|
docbookdir=`dirname $dtd`
|
||
|
echo Found DocBook XML $VERSION DTD in $docbookdir
|
||
|
#
|
||
|
# The original script had a check for write permission on the file
|
||
|
# but I can't see why it should be necessary
|
||
|
#
|
||
|
dtd421=$dtd
|
||
|
break
|
||
|
done
|
||
|
}
|
||
|
|
||
|
#
|
||
|
# Preset script control params
|
||
|
show=0
|
||
|
prefix=0
|
||
|
newdir=0
|
||
|
verbose=0
|
||
|
#
|
||
|
# Isolate the script name for messages
|
||
|
pname=`basename $0`
|
||
|
VERSION=4.1.2
|
||
|
|
||
|
if test "$XML_CATALOG_FILES" != ""
|
||
|
then
|
||
|
ROOTCATALOG=$XML_CATALOG_FILES
|
||
|
else
|
||
|
ROOTCATALOG=/etc/xml/catalog
|
||
|
fi
|
||
|
|
||
|
#
|
||
|
# Interpret script parameters
|
||
|
while test $# -gt 0; do
|
||
|
case "$1" in
|
||
|
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
||
|
*) optarg= ;;
|
||
|
esac
|
||
|
|
||
|
case "$1" in
|
||
|
-p=* | --prefix=*)
|
||
|
ROOTCATALOG=$optarg/catalog
|
||
|
prefix=1
|
||
|
;;
|
||
|
|
||
|
-s | --show)
|
||
|
show=1
|
||
|
;;
|
||
|
|
||
|
-v=* | --version=*)
|
||
|
VERSION=$optarg
|
||
|
;;
|
||
|
|
||
|
-d | --debug)
|
||
|
verbose=1
|
||
|
;;
|
||
|
|
||
|
-h | --help)
|
||
|
usage
|
||
|
exit 0
|
||
|
;;
|
||
|
|
||
|
* )
|
||
|
echo Invalid argument "$1"
|
||
|
usage
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
shift
|
||
|
done
|
||
|
fixname
|
||
|
if test $prefix != 0
|
||
|
then
|
||
|
export XML_CATALOG_FILES=$ROOTCATALOG
|
||
|
fi
|
||
|
if test $show != 0
|
||
|
then
|
||
|
echo XML Catalog is $ROOTCATALOG
|
||
|
echo Docbook Catalog is $CATALOG
|
||
|
exit 0
|
||
|
fi
|
||
|
if test $newdir!=0
|
||
|
then
|
||
|
mkdir -p $DIR
|
||
|
chmod 755 $DIR
|
||
|
fi
|
||
|
|
||
|
echo Starting run
|
||
|
#
|
||
|
# create the catalogs root and docbook specific
|
||
|
#
|
||
|
if [ ! -r $ROOTCATALOG ] ; then
|
||
|
echo creating XML Catalog root $ROOTCATALOG
|
||
|
xmlcatalog --noout --create $ROOTCATALOG
|
||
|
fi
|
||
|
if [ ! -r $ROOTCATALOG ] ; then
|
||
|
echo Failed creating XML Catalog root $ROOTCATALOG
|
||
|
exit 1
|
||
|
fi
|
||
|
if [ ! -r $CATALOG ] ; then
|
||
|
echo creating DocBook XML Catalog $CATALOG
|
||
|
xmlcatalog --noout --create $CATALOG
|
||
|
fi
|
||
|
if [ ! -r $CATALOG ] ; then
|
||
|
echo Failed creating DocBook XML Catalog $CATALOG
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
#
|
||
|
# find the prefix for DocBook DTD
|
||
|
#
|
||
|
finddbx /usr/share/xml
|
||
|
if [ "$dtd421" = "" ] ; then
|
||
|
finddbx $HOME
|
||
|
fi
|
||
|
if [ "$dtd421" = "" ] ; then
|
||
|
finddbx /usr/local
|
||
|
fi
|
||
|
if [ "$dtd421" = "" ] ; then
|
||
|
finddbx /usr/share/sgml
|
||
|
fi
|
||
|
|
||
|
if [ "$dtd421" = "" ] ; then
|
||
|
echo could not locate version $VERSION of DocBook XML
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"-//OASIS//ELEMENTS DocBook XML Information Pool V${VERSION}//EN" \
|
||
|
"file://$docbookdir/dbpoolx.mod" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"-//OASIS//DTD DocBook XML V${VERSION}//EN" \
|
||
|
"file://$docbookdir/docbookx.dtd" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"-//OASIS//ENTITIES DocBook XML Character Entities V${VERSION}//EN" \
|
||
|
"file://$docbookdir/dbcentx.mod" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"-//OASIS//ENTITIES DocBook XML Notations V${VERSION}//EN" \
|
||
|
"file://$docbookdir/dbnotnx.mod" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"-//OASIS//ENTITIES DocBook XML Additional General Entities V${VERSION}//EN" \
|
||
|
"file://$docbookdir/dbgenent.mod" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"-//OASIS//ELEMENTS DocBook XML Document Hierarchy V${VERSION}//EN" \
|
||
|
"file://$docbookdir/dbhierx.mod" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
|
||
|
"file://$docbookdir/soextblx.dtd" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"-//OASIS//DTD DocBook XML CALS Table Model V${VERSION}//EN" \
|
||
|
"file://$docbookdir/calstblx.dtd" $CATALOG
|
||
|
xmlcatalog --noout --add "rewriteSystem" \
|
||
|
"http://www.oasis-open.org/docbook/xml/${VERSION}" \
|
||
|
"file://$docbookdir" $CATALOG
|
||
|
xmlcatalog --noout --add "rewriteURI" \
|
||
|
"http://www.oasis-open.org/docbook/xml/${VERSION}" \
|
||
|
"file://$docbookdir" $CATALOG
|
||
|
|
||
|
xmlcatalog --noout --add "delegatePublic" \
|
||
|
"-//OASIS//ENTITIES DocBook XML" \
|
||
|
"file://$CATALOG" $ROOTCATALOG
|
||
|
xmlcatalog --noout --add "delegatePublic" \
|
||
|
"-//OASIS//DTD DocBook XML" \
|
||
|
"file://$CATALOG" $ROOTCATALOG
|
||
|
xmlcatalog --noout --add "delegateSystem" \
|
||
|
"http://www.oasis-open.org/docbook/" \
|
||
|
"file://$CATALOG" $ROOTCATALOG
|
||
|
xmlcatalog --noout --add "delegateURI" \
|
||
|
"http://www.oasis-open.org/docbook/" \
|
||
|
"file://$CATALOG" $ROOTCATALOG
|
||
|
|
||
|
#
|
||
|
# find the prefix for ISO DocBook entities
|
||
|
#
|
||
|
top=`dirname $docbookdir`
|
||
|
found=`find $top -name isoamsb.ent`
|
||
|
if [ "$found" = "" ] ; then
|
||
|
found=`find /usr/share/xml -name isoamsb.ent`
|
||
|
fi
|
||
|
if [ "$found" = "" ] ; then
|
||
|
found=`find $HOME -name isoamsb.ent`
|
||
|
fi
|
||
|
if [ "$found" = "" ] ; then
|
||
|
found=`find /usr/local -name isoamsb.ent`
|
||
|
fi
|
||
|
if [ "$found" = "" ] ; then
|
||
|
found=`find /usr/share/sgml -name isoamsb.ent`
|
||
|
fi
|
||
|
if [ "$found" = "" ] ; then
|
||
|
echo could not locate isoamsb.ent of ISO DocBook entities
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
entxml=""
|
||
|
for tst in $found; do
|
||
|
check=`grep '<!ENTITY ominus' $tst`
|
||
|
if [ "$check" != "" ] ; then
|
||
|
entxml=$tst
|
||
|
break
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
if [ "$entxml" = "" ] ; then
|
||
|
echo could not locate ISO DocBook entities
|
||
|
exit 1
|
||
|
fi
|
||
|
isodir=`dirname $entxml`
|
||
|
echo Found ISO DocBook entities in $isodir
|
||
|
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Publishing//EN" \
|
||
|
"file://$isodir/isopub.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Greek Letters//EN" \
|
||
|
"file://$isodir/isogrk1.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Box and Line Drawing//EN" \
|
||
|
"file://$isodir/isobox.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Greek Symbols//EN" \
|
||
|
"file://$isodir/isogrk3.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" \
|
||
|
"file://$isodir/isoamsn.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" \
|
||
|
"file://$isodir/isonum.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" \
|
||
|
"file://$isodir/isogrk4.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Diacritical Marks//EN" \
|
||
|
"file://$isodir/isodia.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Monotoniko Greek//EN" \
|
||
|
"file://$isodir/isogrk2.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" \
|
||
|
"file://$isodir/isoamsa.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" \
|
||
|
"file://$isodir/isoamso.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Russian Cyrillic//EN" \
|
||
|
"file://$isodir/isocyr1.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES General Technical//EN" \
|
||
|
"file://$isodir/isotech.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" \
|
||
|
"file://$isodir/isoamsc.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Added Latin 1//EN" \
|
||
|
"file://$isodir/isolat1.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" \
|
||
|
"file://$isodir/isoamsb.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Added Latin 2//EN" \
|
||
|
"file://$isodir/isolat2.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" \
|
||
|
"file://$isodir/isoamsr.ent" $CATALOG
|
||
|
xmlcatalog --noout --add "public" \
|
||
|
"ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" \
|
||
|
"file://$isodir/isocyr2.ent" $CATALOG
|
||
|
|
||
|
xmlcatalog --noout --add "delegatePublic" \
|
||
|
"ISO 8879:1986" \
|
||
|
"file://$CATALOG" $ROOTCATALOG
|
||
|
|
||
|
#
|
||
|
# find the prefix for XSLT stylesheets
|
||
|
#
|
||
|
top=`dirname $docbookdir`
|
||
|
found=`find $top -name chunk.xsl`
|
||
|
if [ "$found" = "" ] ; then
|
||
|
found=`find /usr/share/xml -name chunk.xsl`
|
||
|
fi
|
||
|
if [ "$found" = "" ] ; then
|
||
|
found=`find $HOME -name chunk.xsl`
|
||
|
fi
|
||
|
if [ "$found" = "" ] ; then
|
||
|
found=`find /usr/local -name chunk.xsl`
|
||
|
fi
|
||
|
if [ "$found" = "" ] ; then
|
||
|
found=`find /usr/share/sgml -name chunk.xsl`
|
||
|
fi
|
||
|
if [ "$found" = "" ] ; then
|
||
|
echo could not locate chunk-common.xsl of DocBook XSLT stylesheets
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
xsldir=""
|
||
|
for tst in $found; do
|
||
|
dir=`dirname $tst`
|
||
|
dir=`dirname $dir`
|
||
|
if [ -r $dir/html/docbook.xsl -a -r $dir/common/l10n.xml ]; then
|
||
|
xsldir=$dir
|
||
|
break
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
if [ "$xsldir" = "" ] ; then
|
||
|
echo could not locate DocBook XSLT stylesheets
|
||
|
exit 1
|
||
|
fi
|
||
|
echo Found DocBook XSLT stylesheets in $xsldir
|
||
|
for version in current 1.39 1.40 1.41 1.42 1.43 1.44 1.45 1.46 1.47 \
|
||
|
1.48 1.49 1.50
|
||
|
do
|
||
|
xmlcatalog --noout --add "rewriteSystem" \
|
||
|
"http://docbook.sourceforge.net/release/xsl/$version" \
|
||
|
"file://$xsldir" $CATALOG
|
||
|
xmlcatalog --noout --add "rewriteURI" \
|
||
|
"http://docbook.sourceforge.net/release/xsl/$version" \
|
||
|
"file://$xsldir" $CATALOG
|
||
|
done
|
||
|
|
||
|
xmlcatalog --noout --add "delegateSystem" \
|
||
|
"http://docbook.sourceforge.net/release/xsl/" \
|
||
|
"file://$CATALOG" $ROOTCATALOG
|
||
|
xmlcatalog --noout --add "delegateURI" \
|
||
|
"http://docbook.sourceforge.net/release/xsl/" \
|
||
|
"file://$CATALOG" $ROOTCATALOG
|
||
|
|
||
|
#
|
||
|
#
|