1 | #! /bin/bash
|
---|
2 |
|
---|
3 | usage()
|
---|
4 | {
|
---|
5 | cat <<EOF
|
---|
6 | Usage: $pname [OPTION]
|
---|
7 |
|
---|
8 | Known values for OPTION are:
|
---|
9 | --prefix=DIR change the output directory for catalog files
|
---|
10 | [default $DIR]
|
---|
11 | --show display the output filenames and paths
|
---|
12 | --version=x.y.z change the DocBook version [default $VERSION]
|
---|
13 | --debug display script action information
|
---|
14 | --help display this help and exit
|
---|
15 | EOF
|
---|
16 | }
|
---|
17 |
|
---|
18 | setdefault()
|
---|
19 | {
|
---|
20 | echo Unable to update root catalog $ROOTCATALOG
|
---|
21 | ROOTCATALOG=$HOME/xmlcatalog
|
---|
22 | CATALOG=$HOME/dbkxmlcatalog
|
---|
23 | DIR=$HOME
|
---|
24 | CAT=xmlcatalog
|
---|
25 | echo Using $ROOTCATALOG as the root catalog
|
---|
26 | echo Remember to export XML_CATALOG_FILES=$ROOTCATALOG
|
---|
27 | echo
|
---|
28 | prefix=1
|
---|
29 | }
|
---|
30 |
|
---|
31 | fixname()
|
---|
32 | {
|
---|
33 | #
|
---|
34 | # ROOTCATALOG contains the full pathname for the catalog. We will
|
---|
35 | # split that into the directory name and the filename, then we will
|
---|
36 | # see if the directory exists. If it does not, we will attempt to
|
---|
37 | # create it.
|
---|
38 | #
|
---|
39 | if test $verbose = 1
|
---|
40 | then
|
---|
41 | echo Checking path $ROOTCATALOG for permissions
|
---|
42 | fi
|
---|
43 | # First we split the filename and directory name
|
---|
44 | CAT=`basename $ROOTCATALOG`
|
---|
45 | DIR=`dirname $ROOTCATALOG`
|
---|
46 | if test "$DIR" = ""
|
---|
47 | then
|
---|
48 | echo Unable to isolate directory name from '$ROOTCATALOG' - exiting
|
---|
49 | exit 1
|
---|
50 | fi
|
---|
51 | CATALOG=${DIR}/docbook
|
---|
52 | parent=`dirname $DIR`
|
---|
53 | if test "$parent" == ""
|
---|
54 | then
|
---|
55 | parent=/
|
---|
56 | fi
|
---|
57 | if [ ! -d $DIR ]
|
---|
58 | then
|
---|
59 | if test $verbose = 1
|
---|
60 | then
|
---|
61 | echo Directory $DIR missing - I will try to create it
|
---|
62 | fi
|
---|
63 | if [ ! -w $parent ]
|
---|
64 | then
|
---|
65 | if test $verbose = 1
|
---|
66 | then
|
---|
67 | echo No write permission for directory $parent
|
---|
68 | fi
|
---|
69 | setdefault
|
---|
70 | else
|
---|
71 | newdir=1
|
---|
72 | fi
|
---|
73 | else
|
---|
74 | if [ -f $ROOTCATALOG -a ! -w $ROOTCATALOG ] ||
|
---|
75 | [ -e $ROOTCATALOG -a ! -f $ROOTCATALOG ] ||
|
---|
76 | [ ! -e $ROOTCATALOG -a ! -w $DIR ]
|
---|
77 | then
|
---|
78 | setdefault
|
---|
79 | fi
|
---|
80 | fi
|
---|
81 |
|
---|
82 | }
|
---|
83 | finddbx()
|
---|
84 | {
|
---|
85 | dtd421=""
|
---|
86 | s="//OASIS//DTD DocBook XML V${VERSION}//EN"
|
---|
87 | found=`find $1 -name docbookx.dtd -exec grep -l "$s" {} \;`
|
---|
88 | for dtd in $found; do
|
---|
89 | docbookdir=`dirname $dtd`
|
---|
90 | echo Found DocBook XML $VERSION DTD in $docbookdir
|
---|
91 | #
|
---|
92 | # The original script had a check for write permission on the file
|
---|
93 | # but I can't see why it should be necessary
|
---|
94 | #
|
---|
95 | dtd421=$dtd
|
---|
96 | break
|
---|
97 | done
|
---|
98 | }
|
---|
99 |
|
---|
100 | #
|
---|
101 | # Preset script control params
|
---|
102 | show=0
|
---|
103 | prefix=0
|
---|
104 | newdir=0
|
---|
105 | verbose=0
|
---|
106 | #
|
---|
107 | # Isolate the script name for messages
|
---|
108 | pname=`basename $0`
|
---|
109 | VERSION=4.1.2
|
---|
110 |
|
---|
111 | if test "$XML_CATALOG_FILES" != ""
|
---|
112 | then
|
---|
113 | ROOTCATALOG=$XML_CATALOG_FILES
|
---|
114 | else
|
---|
115 | ROOTCATALOG=/etc/xml/catalog
|
---|
116 | fi
|
---|
117 |
|
---|
118 | #
|
---|
119 | # Interpret script parameters
|
---|
120 | while test $# -gt 0; do
|
---|
121 | case "$1" in
|
---|
122 | -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
---|
123 | *) optarg= ;;
|
---|
124 | esac
|
---|
125 |
|
---|
126 | case "$1" in
|
---|
127 | -p=* | --prefix=*)
|
---|
128 | ROOTCATALOG=$optarg/catalog
|
---|
129 | prefix=1
|
---|
130 | ;;
|
---|
131 |
|
---|
132 | -s | --show)
|
---|
133 | show=1
|
---|
134 | ;;
|
---|
135 |
|
---|
136 | -v=* | --version=*)
|
---|
137 | VERSION=$optarg
|
---|
138 | ;;
|
---|
139 |
|
---|
140 | -d | --debug)
|
---|
141 | verbose=1
|
---|
142 | ;;
|
---|
143 |
|
---|
144 | -h | --help)
|
---|
145 | usage
|
---|
146 | exit 0
|
---|
147 | ;;
|
---|
148 |
|
---|
149 | * )
|
---|
150 | echo Invalid argument "$1"
|
---|
151 | usage
|
---|
152 | exit 1
|
---|
153 | ;;
|
---|
154 | esac
|
---|
155 | shift
|
---|
156 | done
|
---|
157 | fixname
|
---|
158 | if test $prefix != 0
|
---|
159 | then
|
---|
160 | export XML_CATALOG_FILES=$ROOTCATALOG
|
---|
161 | fi
|
---|
162 | if test $show != 0
|
---|
163 | then
|
---|
164 | echo XML Catalog is $ROOTCATALOG
|
---|
165 | echo Docbook Catalog is $CATALOG
|
---|
166 | exit 0
|
---|
167 | fi
|
---|
168 | if test $newdir!=0
|
---|
169 | then
|
---|
170 | mkdir -p $DIR
|
---|
171 | chmod 755 $DIR
|
---|
172 | fi
|
---|
173 |
|
---|
174 | echo Starting run
|
---|
175 | #
|
---|
176 | # create the catalogs root and docbook specific
|
---|
177 | #
|
---|
178 | if [ ! -r $ROOTCATALOG ] ; then
|
---|
179 | echo creating XML Catalog root $ROOTCATALOG
|
---|
180 | xmlcatalog --noout --create $ROOTCATALOG
|
---|
181 | fi
|
---|
182 | if [ ! -r $ROOTCATALOG ] ; then
|
---|
183 | echo Failed creating XML Catalog root $ROOTCATALOG
|
---|
184 | exit 1
|
---|
185 | fi
|
---|
186 | if [ ! -r $CATALOG ] ; then
|
---|
187 | echo creating DocBook XML Catalog $CATALOG
|
---|
188 | xmlcatalog --noout --create $CATALOG
|
---|
189 | fi
|
---|
190 | if [ ! -r $CATALOG ] ; then
|
---|
191 | echo Failed creating DocBook XML Catalog $CATALOG
|
---|
192 | exit 1
|
---|
193 | fi
|
---|
194 |
|
---|
195 | #
|
---|
196 | # find the prefix for DocBook DTD
|
---|
197 | #
|
---|
198 | finddbx /usr/share/xml
|
---|
199 | if [ "$dtd421" = "" ] ; then
|
---|
200 | finddbx $HOME
|
---|
201 | fi
|
---|
202 | if [ "$dtd421" = "" ] ; then
|
---|
203 | finddbx /usr/local
|
---|
204 | fi
|
---|
205 | if [ "$dtd421" = "" ] ; then
|
---|
206 | finddbx /usr/share/sgml
|
---|
207 | fi
|
---|
208 |
|
---|
209 | if [ "$dtd421" = "" ] ; then
|
---|
210 | echo could not locate version $VERSION of DocBook XML
|
---|
211 | exit 1
|
---|
212 | fi
|
---|
213 |
|
---|
214 | xmlcatalog --noout --add "public" \
|
---|
215 | "-//OASIS//ELEMENTS DocBook XML Information Pool V${VERSION}//EN" \
|
---|
216 | "file://$docbookdir/dbpoolx.mod" $CATALOG
|
---|
217 | xmlcatalog --noout --add "public" \
|
---|
218 | "-//OASIS//DTD DocBook XML V${VERSION}//EN" \
|
---|
219 | "file://$docbookdir/docbookx.dtd" $CATALOG
|
---|
220 | xmlcatalog --noout --add "public" \
|
---|
221 | "-//OASIS//ENTITIES DocBook XML Character Entities V${VERSION}//EN" \
|
---|
222 | "file://$docbookdir/dbcentx.mod" $CATALOG
|
---|
223 | xmlcatalog --noout --add "public" \
|
---|
224 | "-//OASIS//ENTITIES DocBook XML Notations V${VERSION}//EN" \
|
---|
225 | "file://$docbookdir/dbnotnx.mod" $CATALOG
|
---|
226 | xmlcatalog --noout --add "public" \
|
---|
227 | "-//OASIS//ENTITIES DocBook XML Additional General Entities V${VERSION}//EN" \
|
---|
228 | "file://$docbookdir/dbgenent.mod" $CATALOG
|
---|
229 | xmlcatalog --noout --add "public" \
|
---|
230 | "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V${VERSION}//EN" \
|
---|
231 | "file://$docbookdir/dbhierx.mod" $CATALOG
|
---|
232 | xmlcatalog --noout --add "public" \
|
---|
233 | "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
|
---|
234 | "file://$docbookdir/soextblx.dtd" $CATALOG
|
---|
235 | xmlcatalog --noout --add "public" \
|
---|
236 | "-//OASIS//DTD DocBook XML CALS Table Model V${VERSION}//EN" \
|
---|
237 | "file://$docbookdir/calstblx.dtd" $CATALOG
|
---|
238 | xmlcatalog --noout --add "rewriteSystem" \
|
---|
239 | "http://www.oasis-open.org/docbook/xml/${VERSION}" \
|
---|
240 | "file://$docbookdir" $CATALOG
|
---|
241 | xmlcatalog --noout --add "rewriteURI" \
|
---|
242 | "http://www.oasis-open.org/docbook/xml/${VERSION}" \
|
---|
243 | "file://$docbookdir" $CATALOG
|
---|
244 |
|
---|
245 | xmlcatalog --noout --add "delegatePublic" \
|
---|
246 | "-//OASIS//ENTITIES DocBook XML" \
|
---|
247 | "file://$CATALOG" $ROOTCATALOG
|
---|
248 | xmlcatalog --noout --add "delegatePublic" \
|
---|
249 | "-//OASIS//DTD DocBook XML" \
|
---|
250 | "file://$CATALOG" $ROOTCATALOG
|
---|
251 | xmlcatalog --noout --add "delegateSystem" \
|
---|
252 | "http://www.oasis-open.org/docbook/" \
|
---|
253 | "file://$CATALOG" $ROOTCATALOG
|
---|
254 | xmlcatalog --noout --add "delegateURI" \
|
---|
255 | "http://www.oasis-open.org/docbook/" \
|
---|
256 | "file://$CATALOG" $ROOTCATALOG
|
---|
257 |
|
---|
258 | #
|
---|
259 | # find the prefix for ISO DocBook entities
|
---|
260 | #
|
---|
261 | top=`dirname $docbookdir`
|
---|
262 | found=`find $top -name iso-amsb.ent`
|
---|
263 | if [ "$found" = "" ] ; then
|
---|
264 | found=`find /usr/share/xml -name iso-amsb.ent`
|
---|
265 | fi
|
---|
266 | if [ "$found" = "" ] ; then
|
---|
267 | found=`find $HOME -name iso-amsb.ent`
|
---|
268 | fi
|
---|
269 | if [ "$found" = "" ] ; then
|
---|
270 | found=`find /usr/local -name iso-amsb.ent`
|
---|
271 | fi
|
---|
272 | if [ "$found" = "" ] ; then
|
---|
273 | found=`find /usr/share/sgml -name iso-amsb.ent`
|
---|
274 | fi
|
---|
275 | if [ "$found" = "" ] ; then
|
---|
276 | echo could not locate iso-amsb.ent of ISO DocBook entities
|
---|
277 | exit 1
|
---|
278 | fi
|
---|
279 |
|
---|
280 | entxml=""
|
---|
281 | for tst in $found; do
|
---|
282 | check=`grep '<!ENTITY ominus."\⊖">' $tst`
|
---|
283 | if [ "$check" != "" ] ; then
|
---|
284 | entxml=$tst
|
---|
285 | break
|
---|
286 | fi
|
---|
287 | done
|
---|
288 |
|
---|
289 | if [ "$entxml" = "" ] ; then
|
---|
290 | echo could not locate ISO DocBook entities
|
---|
291 | exit 1
|
---|
292 | fi
|
---|
293 | isodir=`dirname $entxml`
|
---|
294 | echo Found ISO DocBook entities in $isodir
|
---|
295 |
|
---|
296 | xmlcatalog --noout --add "public" \
|
---|
297 | "ISO 8879:1986//ENTITIES Publishing//EN" \
|
---|
298 | "file://$isodir/iso-pub.ent" $CATALOG
|
---|
299 | xmlcatalog --noout --add "public" \
|
---|
300 | "ISO 8879:1986//ENTITIES Greek Letters//EN" \
|
---|
301 | "file://$isodir/iso-grk1.ent" $CATALOG
|
---|
302 | xmlcatalog --noout --add "public" \
|
---|
303 | "ISO 8879:1986//ENTITIES Box and Line Drawing//EN" \
|
---|
304 | "file://$isodir/iso-box.ent" $CATALOG
|
---|
305 | xmlcatalog --noout --add "public" \
|
---|
306 | "ISO 8879:1986//ENTITIES Greek Symbols//EN" \
|
---|
307 | "file://$isodir/iso-grk3.ent" $CATALOG
|
---|
308 | xmlcatalog --noout --add "public" \
|
---|
309 | "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" \
|
---|
310 | "file://$isodir/iso-amsn.ent" $CATALOG
|
---|
311 | xmlcatalog --noout --add "public" \
|
---|
312 | "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" \
|
---|
313 | "file://$isodir/iso-num.ent" $CATALOG
|
---|
314 | xmlcatalog --noout --add "public" \
|
---|
315 | "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" \
|
---|
316 | "file://$isodir/iso-grk4.ent" $CATALOG
|
---|
317 | xmlcatalog --noout --add "public" \
|
---|
318 | "ISO 8879:1986//ENTITIES Diacritical Marks//EN" \
|
---|
319 | "file://$isodir/iso-dia.ent" $CATALOG
|
---|
320 | xmlcatalog --noout --add "public" \
|
---|
321 | "ISO 8879:1986//ENTITIES Monotoniko Greek//EN" \
|
---|
322 | "file://$isodir/iso-grk2.ent" $CATALOG
|
---|
323 | xmlcatalog --noout --add "public" \
|
---|
324 | "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" \
|
---|
325 | "file://$isodir/iso-amsa.ent" $CATALOG
|
---|
326 | xmlcatalog --noout --add "public" \
|
---|
327 | "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" \
|
---|
328 | "file://$isodir/iso-amso.ent" $CATALOG
|
---|
329 | xmlcatalog --noout --add "public" \
|
---|
330 | "ISO 8879:1986//ENTITIES Russian Cyrillic//EN" \
|
---|
331 | "file://$isodir/iso-cyr1.ent" $CATALOG
|
---|
332 | xmlcatalog --noout --add "public" \
|
---|
333 | "ISO 8879:1986//ENTITIES General Technical//EN" \
|
---|
334 | "file://$isodir/iso-tech.ent" $CATALOG
|
---|
335 | xmlcatalog --noout --add "public" \
|
---|
336 | "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" \
|
---|
337 | "file://$isodir/iso-amsc.ent" $CATALOG
|
---|
338 | xmlcatalog --noout --add "public" \
|
---|
339 | "ISO 8879:1986//ENTITIES Added Latin 1//EN" \
|
---|
340 | "file://$isodir/iso-lat1.ent" $CATALOG
|
---|
341 | xmlcatalog --noout --add "public" \
|
---|
342 | "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" \
|
---|
343 | "file://$isodir/iso-amsb.ent" $CATALOG
|
---|
344 | xmlcatalog --noout --add "public" \
|
---|
345 | "ISO 8879:1986//ENTITIES Added Latin 2//EN" \
|
---|
346 | "file://$isodir/iso-lat2.ent" $CATALOG
|
---|
347 | xmlcatalog --noout --add "public" \
|
---|
348 | "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" \
|
---|
349 | "file://$isodir/iso-amsr.ent" $CATALOG
|
---|
350 | xmlcatalog --noout --add "public" \
|
---|
351 | "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" \
|
---|
352 | "file://$isodir/iso-cyr2.ent" $CATALOG
|
---|
353 |
|
---|
354 | xmlcatalog --noout --add "delegatePublic" \
|
---|
355 | "ISO 8879:1986" \
|
---|
356 | "file://$CATALOG" $ROOTCATALOG
|
---|
357 |
|
---|
358 | #
|
---|
359 | # find the prefix for XSLT stylesheets
|
---|
360 | #
|
---|
361 | top=`dirname $docbookdir`
|
---|
362 | found=`find $top -name chunk.xsl`
|
---|
363 | if [ "$found" = "" ] ; then
|
---|
364 | found=`find /usr/share/xml -name chunk.xsl`
|
---|
365 | fi
|
---|
366 | if [ "$found" = "" ] ; then
|
---|
367 | found=`find $HOME -name chunk.xsl`
|
---|
368 | fi
|
---|
369 | if [ "$found" = "" ] ; then
|
---|
370 | found=`find /usr/local -name chunk.xsl`
|
---|
371 | fi
|
---|
372 | if [ "$found" = "" ] ; then
|
---|
373 | found=`find /usr/share/sgml -name chunk.xsl`
|
---|
374 | fi
|
---|
375 | if [ "$found" = "" ] ; then
|
---|
376 | echo could not locate chunk-common.xsl of DocBook XSLT stylesheets
|
---|
377 | exit 1
|
---|
378 | fi
|
---|
379 |
|
---|
380 | xsldir=""
|
---|
381 | for tst in $found; do
|
---|
382 | dir=`dirname $tst`
|
---|
383 | dir=`dirname $dir`
|
---|
384 | if [ -r $dir/html/docbook.xsl -a -r $dir/common/l10n.xml ]; then
|
---|
385 | xsldir=$dir
|
---|
386 | break
|
---|
387 | fi
|
---|
388 | done
|
---|
389 |
|
---|
390 | if [ "$xsldir" = "" ] ; then
|
---|
391 | echo could not locate DocBook XSLT stylesheets
|
---|
392 | exit 1
|
---|
393 | fi
|
---|
394 | echo Found DocBook XSLT stylesheets in $xsldir
|
---|
395 | for version in current 1.39 1.40 1.41 1.42 1.43 1.44 1.45 1.46 1.47 \
|
---|
396 | 1.48 1.49 1.50
|
---|
397 | do
|
---|
398 | xmlcatalog --noout --add "rewriteSystem" \
|
---|
399 | "http://docbook.sourceforge.net/release/xsl/$version" \
|
---|
400 | "file://$xsldir" $CATALOG
|
---|
401 | xmlcatalog --noout --add "rewriteURI" \
|
---|
402 | "http://docbook.sourceforge.net/release/xsl/$version" \
|
---|
403 | "file://$xsldir" $CATALOG
|
---|
404 | done
|
---|
405 |
|
---|
406 | xmlcatalog --noout --add "delegateSystem" \
|
---|
407 | "http://docbook.sourceforge.net/release/xsl/" \
|
---|
408 | "file://$CATALOG" $ROOTCATALOG
|
---|
409 | xmlcatalog --noout --add "delegateURI" \
|
---|
410 | "http://docbook.sourceforge.net/release/xsl/" \
|
---|
411 | "file://$CATALOG" $ROOTCATALOG
|
---|
412 |
|
---|
413 | #
|
---|
414 | #
|
---|