| #! /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 iso-amsb.ent` | |
| if [ "$found" = "" ] ; then | |
| found=`find /usr/share/xml -name iso-amsb.ent` | |
| fi | |
| if [ "$found" = "" ] ; then | |
| found=`find $HOME -name iso-amsb.ent` | |
| fi | |
| if [ "$found" = "" ] ; then | |
| found=`find /usr/local -name iso-amsb.ent` | |
| fi | |
| if [ "$found" = "" ] ; then | |
| found=`find /usr/share/sgml -name iso-amsb.ent` | |
| fi | |
| if [ "$found" = "" ] ; then | |
| echo could not locate iso-amsb.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/iso-pub.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Greek Letters//EN" \ | |
| "file://$isodir/iso-grk1.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Box and Line Drawing//EN" \ | |
| "file://$isodir/iso-box.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Greek Symbols//EN" \ | |
| "file://$isodir/iso-grk3.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" \ | |
| "file://$isodir/iso-amsn.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" \ | |
| "file://$isodir/iso-num.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" \ | |
| "file://$isodir/iso-grk4.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Diacritical Marks//EN" \ | |
| "file://$isodir/iso-dia.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Monotoniko Greek//EN" \ | |
| "file://$isodir/iso-grk2.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" \ | |
| "file://$isodir/iso-amsa.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" \ | |
| "file://$isodir/iso-amso.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Russian Cyrillic//EN" \ | |
| "file://$isodir/iso-cyr1.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES General Technical//EN" \ | |
| "file://$isodir/iso-tech.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" \ | |
| "file://$isodir/iso-amsc.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Added Latin 1//EN" \ | |
| "file://$isodir/iso-lat1.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" \ | |
| "file://$isodir/iso-amsb.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Added Latin 2//EN" \ | |
| "file://$isodir/iso-lat2.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" \ | |
| "file://$isodir/iso-amsr.ent" $CATALOG | |
| xmlcatalog --noout --add "public" \ | |
| "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" \ | |
| "file://$isodir/iso-cyr2.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 | |
| # | |
| # |